2012-02-17 131 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您在日誌改正鎖定的問題,這意味着你的數據庫是開放,你做在數據庫中,以便接近數據庫中的一些變化,並再次嘗試運行應用程序,並在表中插入...

希望這將幫助你..