【发布时间】:2011-07-05 12:00:44
【问题描述】:
我真的对这个错误感到沮丧。我花了两天时间来解决这个问题。但它没有得到修复,当时从数据库中获取数据时没有问题。但是当触发插入语句时。我明白了错误:
-[NewJourney addJourney] 中的断言失败,/Users/HarishYadav/Desktop/JourneyMapper/Journey/NewJourney.m:114 2011-07-05 17:23:13.739 Journey[24328:207] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“插入数据时出错。 '数据库被锁定'' * 首次抛出时调用堆栈:
这是我在数据库中插入值的代码
-(void)addJourney { if (addStmt == nil) {
const char * sql = "insert into UserJourney(JourneyName,LocationName,Description) 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, [journeyname UTF8String], -1,SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 2, [journeylocation UTF8String],-1, SQLITE_TRANSIENT);
sqlite3_bind_text(addStmt, 3, [journeydescription UTF8String],-1 , SQLITE_TRANSIENT);
if (SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0,@"Error while inserting data. '%s'",sqlite3_errmsg(database));
else
journeyID = sqlite3_last_insert_rowid(database);
sqlite3_reset(addStmt);
}
这是什么问题
提前致谢
【问题讨论】:
-
似乎数据库是从其他地方访问的。这就是为什么它说数据库已锁定。尝试使用 NSZombie 调试您的应用程序。我更喜欢将 FMDB 用于 sqlite 目的。
-
是的,我的数据库可以从其他类获得访问权限
-
Jignesh 是正确的使用 finalize 语句,看看它是否有效。但我更喜欢 FMDB 的 sqlite。它很容易实现,易于调试,您不必为使用 SQLite 做很多努力。 FMDB 会处理所有事情。
-
@Rahul 我不知道如何使用 FMDB。我现在正在使用 sqlite 数据库。我认为它会变得一团糟。
-
如果您的应用程序处于完成阶段,请坚持使用 sqlite。但是为了将来使用 FMDB。
标签: iphone objective-c sqlite