【发布时间】:2012-12-05 17:09:18
【问题描述】:
我遇到了一个问题,我试图将来自 NSMutableArray 的数据插入到我的数据库中。这是我到目前为止所拥有的:
- (void)insertList:(NSString*) strListName ArrayOfData:(NSMutableArray*) dataArray{
sqlite3 *database = nil;
sqlite3_stmt *addStmt = nil;
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"customlists.sqlite"];
if(sqlite3_open([defaultDBPath UTF8String], &database) == SQLITE_OK)
{
for (int i = 0; i < dataArray.count; i++)
{
PageData *pageDta = [PageData new];
pageDta = [dataArray objectAtIndex:i];
if(addStmt == nil) {
const char *sql = "insert into NewList(ListName, PageName, PageNumber, id) 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, [strListName UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [pageDta.strNamebyFilter UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 3, [pageDta.strPageNuber UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(addStmt, 4, i);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
//SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
sqlite3_last_insert_rowid(database);
//Reset the add statement.
sqlite3_reset(addStmt);
}
}
else
{
NSLog(@"Error while opening database '%s'", sqlite3_errmsg(database));
}
sqlite3_close(database);
}
但是调用这个函数后,数据库是空的。有人可以帮我找出这个问题的原因和潜在的补救措施吗?
【问题讨论】:
-
有太多代码开始思考问题出在哪里......也许您可以调试它或将问题减少到代码的某些部分。如果您将此代码粘贴到 stackoverflow 中等待答案,您将不会获得太多帮助...祝您好运!
-
你有输出日志吗?还是什么也没发生? !
-
实际上函数运行成功,没有错误,所以没有什么要调试的。
-
调试工具不仅在您发现错误时使用,大多数时候如果您不知道发生了什么,它会很有帮助...
-
看看我的回答:stackoverflow.com/questions/13060166/sqlite-ios-insert-data,希望对你有帮助:)
标签: iphone objective-c ios xcode sqlite