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