Mr_me 2012-09-25 05:53 采纳率: 66.7%
浏览 2386
已采纳

在SQLITE数据库中插入值

在SQLITE数据库中插入值,但是实现不了。代码中的数值都是varchar 类型。
代码如下:

sqlite3_stmt *statement;

NSString *docsDir;
NSArray *dirPaths;
int ID;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     
NSUserDomainMask, YES);

docsDir = [dirPaths objectAtIndex:0];

databasePath = [[NSString alloc] initWithString: [docsDir  
stringByAppendingPathComponent: @"weather.sqlite"]];


const char *dbpath = [databasePath UTF8String];

if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO satish VALUES    

('jodhpur','hazy1','68','7','700','30','28','10sept')"];

const char *insert_stmt = [insertSQL UTF8String];

sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL);
{
    NSLog(@"%@",statement);
    sqlite3_bind_text(statement, 1, insert_stmt, -1, SQLITE_TRANSIENT );

    if (sqlite3_step(statement) == SQLITE_ROW)
    {
        ID = sqlite3_last_insert_rowid(contactDB);

        NSLog(@"Data inserted successfully ");

    } 
    else{             
        NSLog(@"Failed to add contact");
    }
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
  • 写回答

1条回答

  • MrsSeven7 2012-09-25 07:44
    关注
    //试试下面的代码  
    // 需要在数据库里插入列值
    
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
        NSString *documentsDir = [paths objectAtIndex:0];
    
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSError *error;
        NSString *dbPath =[documentsDir stringByAppendingPathComponent:@"register.sqlite"];
        BOOL success = [fileManager fileExistsAtPath:dbPath]; 
        sqlite3_stmt *selectstmt;
        if(!success)
        {
            NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"register.sqlite"];
            success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];
    
            if (!success) 
                NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
        }
    
        if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
            //*************** 在数据库中插入值******************************\\ 
    
            const char *sql = "insert into satish (firstname,lastname,email,company,phone) VALUES ('sdcbb','bbbb','bbbb','bbbb',1111122)";
            sqlite3_prepare_v2(database,sql, -1, &selectstmt, NULL); 
            if(sqlite3_step(selectstmt)==SQLITE_DONE)
            {
                NSLog(@"insert successfully");
            }
            else
            {
                NSLog(@"insert not successfully");
    
            }
        sqlite3_finalize(selectstmt);
            sqlite3_close(database);
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退