2015-05-09 77 views
1

數據添加到一個數據庫中,我想,當我們把這個InsUpdateDelData其返回假執行插入查詢查詢工作正常則表示數據沒有插入如何使用SQLite經理

- (IBAction)addToCart:(id)sender { 

    AppDelegate *obj = (AppDelegate *)[[UIApplication sharedApplication]delegate] ; 
    NSString *insert = @"[email protected]" ; 


    NSString *insertSQL = [NSString stringWithFormat: 
    @"INSERT INTO cart_user(user_id,product_price,product_type,categories_type,product_images,description) values('%@','%@','%@','%@','%@','%@')",insert,handBegsImages.product_price,handBegsImages.product_tagline,handbegCategoriess.handbegid,handBegsImages.main_image,handBegsImages.product_description]; 
    BOOL abc = [obj InsUpdateDelData:insertSQL]; 
    NSLog(@"print the value of abc %@=", abc) ; 
    if (abc == TRUE) { 
     NSLog(@"@ Data was Inserted"); 
    } 
    else{ 
      [Utility showAlertView:@"Plz try again message" message:@"Again" viewcontroller:self]; 
    } 
    } 


-(BOOL)InsUpdateDelData:(NSString*)SqlStr 
{ 
    if([SqlStr isEqual:@""]) 
     return NO; 

    BOOL RetrunValue; 
    RetrunValue = NO; 
    const char *sql = [SqlStr cStringUsingEncoding:NSUTF8StringEncoding]; 
    sqlite3_stmt *stmt; 
    if (sqlite3_prepare_v2(database, sql, -1, &stmt, nil) == SQLITE_OK) 
     RetrunValue = YES; 

    if(RetrunValue == YES) 
    { 
     if(sqlite3_step(stmt) != SQLITE_DONE) { 

     } 
     sqlite3_finalize(stmt); 
    } 
    return RetrunValue; 
} 
+0

報告不是錯誤 –

+0

的NSLog(@「打印sqlite3的價值%s =「,sqlite3_errmsg(database)); 我的問題是解決這個問題的解決方案 –

+0

非常好。順便說一句,你可能想要小心構建這樣的SQL語句。如果其中任何一個字符串值碰巧有一個撇號,你的SQL將失敗。最好使用'?'佔位符,然後將值綁定到它們。如果你正確地做到這一點,你的代碼會很快變得麻煩,所以你可能會考慮像[FMDB](https://github.com/ccgus/fmdb)這樣的函數,它具有像'executeUpdate'和'executeQuery'這樣的函數,值,但爲您執行必要的'sqlite3_bind_text'調用。 – Rob

回答

0

如果InsUpdateDelData回到NO那麼這意味着sqlite3_prepare_v2沒有返回SQLITE_OK。如果你想知道爲什麼它沒有返回SQLITE_OK,則記錄錯誤後立即sqlite3_prepare_v2失敗,但調用任何其它的SQLite函數之前:

NSLog(@"err=%s", sqlite3_errmsg(database));