【问题标题】:Sqlite finalise and Db locking issueSqlite finalize 和 Db 锁定问题
【发布时间】:2012-03-08 14:11:45
【问题描述】:

我在我的应用程序中使用了以下功能,并且我最近开始使用 sq-lite,我想听听您的意见,我是否正确使用该功能。

由于我在搜索时遇到应用程序中的数据库锁定问题,我发现我需要使用 sqlite3 finalize 语句。

我不确定是否需要为每个 sqlite3 准备语句放置一个 finalize 语句

请告诉我

- ( BOOL ) addNewCate:(NSString*)dbPath:(NSString*)title:(NSString*)tierOneID:(NSString*)tierTwoID{

    BOOL returnVal = NO;

    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 
    {
        const char *sql = "insert into storyboard_phrases(phrase) Values(?)";

        sqlite3_stmt *addStmt;

        if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) == SQLITE_OK){

            sqlite3_bind_text(addStmt, 1, [title UTF8String], -1, SQLITE_TRANSIENT);
        }

        if(sqlite3_step(addStmt) != SQLITE_DONE ) {

            NSLog( @"Error: %s", sqlite3_errmsg(database) );

        } else {

            NSLog( @"Insert into row id = %d", sqlite3_last_insert_rowid(database));

            int ph_id = sqlite3_last_insert_rowid(database);

            int sub_category_id = [tierTwoID intValue];

            int main_category_id = [tierOneID intValue];

            addStmt = nil;

            sql = "insert into phrase_reference(phrase_id, sub_category_id,main_category_id) Values(?,?,?)";

            if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) == SQLITE_OK){

                sqlite3_bind_int(addStmt, 1, ph_id);

                sqlite3_bind_int(addStmt, 2, sub_category_id);

                sqlite3_bind_int(addStmt, 3, main_category_id);

            }

            if(sqlite3_step(addStmt) != SQLITE_DONE ) {

                NSLog( @"Error: %s", sqlite3_errmsg(database) );

            } else {

                NSLog( @"Insert into row id = %d", sqlite3_last_insert_rowid(database));
                returnVal = YES;


            }

        }
        sqlite3_finalize(addStmt);

    }
    sqlite3_close(database);

    return returnVal;
}

【问题讨论】:

    标签: iphone sqlite ios4


    【解决方案1】:

    您在日志中得到了锁定的问题,这意味着您的数据库打开并且您对该数据库进行了一些更改,因此关闭数据库并再次尝试运行应用程序并插入表格...

    希望这会对你有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多