如何在iphone中向数据库插入数据

如何在iphone中向数据库插入数据,iphone,xcode,sqlite,Iphone,Xcode,Sqlite,我使用以下代码将数据插入数据库,但数据未插入数据库 我正在使用以下代码 我正在将数据插入iphone应用程序,但它没有插入 我有表格调查\问题\主控(问题\ id、问题\文本、问题\类型) 你是如何读取数据库的,无论它是否插入数据?我正在从sqlite管理器打开数据库以查看插入的数据,你是否收到错误消息?或者它执行了,但数据库中没有任何内容?它执行时还显示成功添加了NSLog,但数据库中没有任何内容。但是,您的NSLog没有测试任何条件,因此这意味着它没有崩溃。您需要使您的addCoffee方法

我使用以下代码将数据插入数据库,但数据未插入数据库 我正在使用以下代码

我正在将数据插入iphone应用程序,但它没有插入

我有表格调查\问题\主控(问题\ id、问题\文本、问题\类型)


你是如何读取数据库的,无论它是否插入数据?我正在从sqlite管理器打开数据库以查看插入的数据,你是否收到错误消息?或者它执行了,但数据库中没有任何内容?它执行时还显示成功添加了NSLog,但数据库中没有任何内容。但是,您的
NSLog
没有测试任何条件,因此这意味着它没有崩溃。您需要使您的
addCoffee
方法返回
BOOL
,并停止使用
NSAssert
报告错误。另外,您还调用了两次
addCoffee
,这看起来很棘手。
- (void) addCoffee {
    if(addStmt == nil) {
        const char *sql = "insert into survey_question_master(question_text,question_type) Values( ? ,?)";

        if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
    }

    sqlite3_bind_text(addStmt, 1, [question_text UTF8String], -1, SQLITE_TRANSIENT);
    sqlite3_bind_text(addStmt, 2, [question_type UTF8String], -1, SQLITE_TRANSIENT);

    if(SQLITE_DONE != sqlite3_step(addStmt))
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
    else
        question_ID = sqlite3_last_insert_rowid(database);

    //Reset the add statement.
    sqlite3_reset(addStmt);
}



   - (void) addCoffee:(DataController *)coffeeObj {

    //Add it to the database.
    [coffeeObj addCoffee];
   //Add it to the coffee array.
    [coffeeArray addObject:coffeeObj];
     NSLog(@"Succeessfully Added");
    }
- (NSString *) getDBPath 
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];
    return [documentsDir stringByAppendingPathComponent:@"database.sqlite"];
}

-(void)SaveData:(NSMutableArray *)insertDataArray
{

    sqlite3_stmt *stmt;
    const char *dbPath = [[self getDBPath] UTF8String];
    if(sqlite3_open(dbPath, &database)==SQLITE_OK)
    {
        NSString *insertSQL = [NSString stringWithFormat:@"insert into items (c1,c2,c3,c4 , c5 ,c6,c7,c8,c9) values (\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\")",[insertDataArray objectAtIndex:0],[insertDataArray objectAtIndex:1],[insertDataArray objectAtIndex:2],[insertDataArray objectAtIndex:3],[insertDataArray objectAtIndex:4],[insertDataArray objectAtIndex:5],[insertDataArray objectAtIndex:6],[insertDataArray objectAtIndex:7],[insertDataArray objectAtIndex:8]];

        NSLog(@"%@",insertSQL);
        const char *insert_stmt = [insertSQL UTF8String];
        sqlite3_prepare_v2(database, insert_stmt, -1, &stmt, NULL);

        if(sqlite3_step(stmt)==SQLITE_DONE)
        {
            NSLog(@"insert success");
        }
        else
        {
            NSLog(@"insert un success");
            NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
        }
        int success=sqlite3_step(stmt);

        if (success == SQLITE_ERROR) 
        {
            NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
        }        sqlite3_finalize(stmt);
        sqlite3_close(database);

    }

}