Sqlite завершить и проблема блокировки БД - PullRequest
0 голосов
/ 17 февраля 2012

Я использую нижеприведенную функцию в своем приложении, и недавно я начал использовать sq-lite, и я хотел бы узнать ваше мнение, правильно ли я это понимаю или нет.

Поскольку я столкнулся с проблемой блокировки базы данных в своем приложении, при поиске я обнаружил, что мне нужно использовать оператор завершения sqlite3.

что я не уверен, так это то, что мне нужно поместить один оператор завершения для каждого подготовительного оператора sqlite3

Пожалуйста, дайте мне знать

- ( 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;
}

1 Ответ

0 голосов
/ 18 февраля 2012

hii вы правильно видите заблокированные проблемы в журнале, это означает, что ваша база данных открыта , и вы делаете некоторые изменения в этой базе данных, поэтому закрываете базу данных и попробуйте снова запустить приложение и вставить в таблице ...

надеюсь, что это поможет вам ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...