2013-01-03 47 views
0
我無法得到這個代碼通過iOS的實際數據插入到我的SQLite數據庫

不工作:SQLite的插入iOS中

  NSString* inssql = [NSString stringWithFormat:@"INSERT OR IGNORE INTO roomData VALUES ('%@', '%i', '%@', '%@', '%@', '%@'); UPDATE roomData SET roomNumber='%@', roomName='%@', roomDesc='%@', roomHash='%@' WHERE roomID = '%@'", [row objectAtIndex:0],property,[row objectAtIndex:1],[row objectAtIndex:2],[row objectAtIndex:3],[row objectAtIndex:4],[row objectAtIndex:1],[row objectAtIndex:2],[row objectAtIndex:3],[row objectAtIndex:4],[row objectAtIndex:0]]; 
     sql = [inssql UTF8String]; 

     if (sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { 
      NSLog(@"MESSAGE: Could not prepare this insert, %s", sqlite3_errmsg(db)); 
     } else { 
      if (sqlite3_step(sqlStatement) == SQLITE_DONE) 
      { 
       NSLog(@"MESSAGE: Successful insert, %@, %d", [row objectAtIndex:0], sqlite3_step(sqlStatement)); 
      } else { 
       NSLog(@"MESSAGE: Failed insert, %s", sqlite3_errmsg(db)); 
      } 
     } 

我得到「插入成功」,但沒有數據庫中的數據。任何想法是什麼?這是我第一次使用SQLite。

編輯#1:

我也曾嘗試以下語法:

  sql = "INSERT INTO roomData VALUES (?)"; 
     sqlite3_prepare(db, sql, -1, &sqlStatement, NULL); 
     sqlite3_bind_int(sqlStatement, 1, 2); 
     if(sqlite3_step(sqlStatement)) { NSLog(@"DONE!"); } else { NSLog(@"FAIL: %s",sqlite3_errmsg(db)); } 

我得到! 「DONE」,但數據庫仍然是空的。

編輯#2:

我本來試圖修改數據庫,因爲它是存儲在應用程序包。一個錯誤,對吧?所以我已經安裝了一個腳本,將數據庫複製到庫目錄並使用該副本。但腳本仍然不會將記錄插入到數據庫中。我在這裏錯過了什麼?

回答

0

我設法解決了這個問題。原始問題肯定是數據庫文件必須位於Library文件夾中。解決這個問題後,它只是不工作,因爲我的SQL語句沒有正確插入正確數量的字段。糾正了我的陳述後,這個過程非常漂亮。不知道爲什麼它不會產生錯誤。