2012-07-03 215 views
0

我想通過JSON調用更新iPhone應用程序中的SQLite數據庫,我想知道我是否以正確的方式接近它,並且會熱衷於您的反饋/輸入。通過JSON更新iPhone SQLite數據庫

我正在考慮在數組中使用包含x數字字典的JSON編碼字符串。

每個詞典都會有一些屬性對應於我想在應用程序中執行的CRUD函數,以及我想要更新/刪除/添加的數據 - 我想它可能看起來像這...

[{ "crudFunction": "INSERT", "name": "John", "city": "city1", "phone": 11111}, 
{ "crudFunction": "UPDATE", "name": "Andrew", "city": "city2", "phone": 22222}, 
{ "crudFunction": "DELETE", "name": "Matt", "city": "city3", "phone": 33333}, 
{ "crudFunction": "UPDATE", "name": "Mike", "city": "city4", "phone": 44444} ] 

爲了保持事情簡單,在上面的例子中我將更新同一表的緣故。

對目標C沒有深入的瞭解 - 我想知道是否可以使用從上面的數組/字典中獲取的變量構造SQL語句?喜歡的東西:

NSString *insertQuery = @"INSERT INTO my_table (name, city, phone){[name],[city],[phone]}"; 

或更新的情況下...

NSString *insertQuery = @"UPDATE my_table SET city=[city], phone=[phone] WHERE name=Mike"; 

我在想,在場景中的,我將有多個更新,以,我可以創建一個CRUD對象(包含(與交易相關的)CRUD記錄/變量等一個DELETE對象,其中包含我想要從我的數據庫中刪除的所有記錄,或一個包含我想更新的所有記錄/值的UPDATE對象。

,這一切有意義嗎?我是否以正確的方式去做這件事?或者我應該放下自己正在吸菸的事,回到我的日常工作中去?

在此先感謝 渦

+0

看一看CoreData爲好。這將幫助你解決這個問題,並處理許多你可能還沒有想到的事情! –

+0

哦,不要忘記,你需要知道你的應用程序中的數據是什麼狀態(也就是說你刪除了哪些記錄,之前插入了哪些記錄等等),以便知道從哪個數據中獲取數據服務器。 –

回答

0

您可以使用sqlite3_prepare_v2準備,你以後執行

例如

//Set ? for variables 
const char *sql = "INSERT INTO my_table (name, city, phone){?,?,?}"; 
sqlite3_stmt *statement; 
int returnValue = sqlite3_prepare_v2(database, sql, -1, &statment, NULL); 

語句然後用sqlite3_bind_text設定值,如果他們是文本

sqlite3_bind_text(statement, 1, yourName, -1, SQLITE_TRANSIENT); 
sqlite3_bind_text(statement, 2, yourCity, -1, SQLITE_TRANSIENT); 
sqlite3_bind_text(statement, 3, yourPhone, -1, SQLITE_TRANSIENT); 

然後使用sqlite3_step來執行,

您可以保存statement SQL執行它的其他時間