【发布时间】:2012-08-07 22:39:23
【问题描述】:
我在 iPad 开发项目中写入 SQLite 数据库时遇到问题。这是我使用插入语句写入数据库的代码。我执行语句时sqlite没有发回错误但是数据仍然没有保存在数据库中。
我的插入语句的简化版本:
//Insert Into POHeader(CustID, CatalogName) Values('0', 'webdemo')
@try {
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *dbPath = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"Orders.db"];
BOOL success = [fileMgr fileExistsAtPath:dbPath];
if(!success)
{
NSLog(@"Cannot locate database file '%@'.", dbPath);
}
if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
{
NSLog(@"An error has occured: %@", sqlite3_errmsg(db));
}
sql = [self prepareSqlForPOHeader];
sqlite3_stmt *sqlStatement;
int sqlResult = (sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL));
if (sqlResult != SQLITE_OK)// (sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
{
NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db));
}else{
//success
}
sqlite3_finalize(sqlStatement);
}
@catch (NSException *exception) {
NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db));
}
@finally {
sqlite3_close(db);
}
【问题讨论】:
-
不完全是我的领域,但不应该有什么东西可以实际执行准备好的语句吗? (sqlite3_step?)
-
虽然我对此进行了更多研究。应用程序中的数据库是通过将现有 SQLite 数据库拖放到资源文件夹中来创建的。这是否会使其成为只读然后 SQLite 由于某种原因没有返回此错误?