尝试在iphone上插入sqlite数据库时断言失败

时间:2011-07-05 12:00:44

标签: iphone objective-c sqlite

我真的对这个错误感到沮丧。我已经花了两天时间来解决这个问题。但是它没有得到修复,当时从数据库获取数据没有问题。但是当激活插入语句时我得到了这个。错误:

断言失败 - [NewJourney addJourney],/ Usrs / HaryadYadav / Desktop / JourneyMapper / Travel / Newwourney.m:114 2011-07-05 17:23:13.739旅程[24328:207] *由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'插入数据时出错。 '数据库被锁定'' * 首先调用堆栈:

这是我在数据库中插入值的代码

- (无效)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);

}

这是什么问题

提前致谢

2 个答案:

答案 0 :(得分:3)

您需要在完成陈述后使用

  

sqlite3_finalize(语句);

在您使用数据库交互的每个函数中。

答案 1 :(得分:0)

检查您的数据库是否已打开?

if(sqlite3_open([temppath UTF8String], &database) == SQLITE_OK)