将数据添加到 SQLite 数据库
Posted
技术标签:
【中文标题】将数据添加到 SQLite 数据库【英文标题】:Adding Data to SQLite database 【发布时间】:2012-04-02 12:13:59 【问题描述】:以下代码是向SQLite数据库添加数据;
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO FruitsTable name,qty,amt,date VALUES \"%@\",\"%@\",\"%d\",\"%@\"",fruits.fruitName,fruits.qty,fruits.amount,fruits.date];
NSLog(@"query %@",insertSQL);
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
NSLog(@"Row added");
else
NSLog(@"Failed to add row");
sqlite3_finalize(statement);
sqlite3_close(database);
添加行失败..因为在语句中获取空值。
【问题讨论】:
还有什么?你在哪里创建数据库路径?其他代码? @Sarah: 谢谢我在创建数据库路径时犯了错误 【参考方案1】:查看我将数据插入 sql 的工作示例
NSDate* date = [NSDate date];
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString* str = [formatter stringFromDate:date];
sqlite3 *database;
///////
sqlite3_stmt *compiledStmt;
if(sqlite3_open([dbPath UTF8String], &database) ==SQLITE_OK)
sqlite3_prepare_v2(database, "BEGIN TRANSACTION", -1, &compiledStmt, NULL);
sqlite3_step(compiledStmt);
sqlite3_finalize(compiledStmt);
const char *sqlInsertQry="insert into bookmarks(book_id,description,entry_date,page_no) values(?,?,?,?)";
if(sqlite3_prepare_v2(database, sqlInsertQry, -1, &compiledStmt, NULL) == SQLITE_OK )
sqlite3_bind_int(compiledStmt,1,[[bookdetail valueForKey:@"bookid"] intValue]);
sqlite3_bind_text(compiledStmt,2,[[bookdetail valueForKey:@"text"] UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStmt,3,[str UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_int(compiledStmt,4,[[bookdetail valueForKey:@"page"] intValue]);
NSUInteger err = sqlite3_step(compiledStmt);
if (err != SQLITE_DONE)
NSLog(@"error while binding %d %s",err, sqlite3_errmsg(database));
sqlite3_reset(compiledStmt);
sqlite3_finalize(compiledStmt);
else
NSLog(@"Invalid Query");
sqlite3_prepare_v2(database, "END TRANSACTION", -1, &compiledStmt, NULL);
sqlite3_step(compiledStmt);
sqlite3_finalize(compiledStmt);
sqlite3_close(database);
return YES;
else
NSLog(@"error while opening database.");
return NO;
【讨论】:
以上是关于将数据添加到 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何将信息添加到 sqlite 数据库,然后使用 javafx 显示信息?
如何从android studio中的recycler视图将数据添加到SQLite数据库中