2012-02-17 70 views
0

我使用下面的函数在我的应用程序,我已经使用SQ-精简版最近才开始和我想获得的是我与那个正确或不打算你的意见。sqlite的敲定和Db锁定问题

由于搜索时我发现我需要使用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; 
} 

回答

0

HII您在日志改正锁定的问题,这意味着你的数据库是开放,你做在数据库中,以便接近数据库中的一些变化,并再次尝试运行应用程序,并在表中插入...

希望这将帮助你..