我有一個使用本地數據庫功能的iOS應用程序。我不使用CoreData;我將我的sqlite文件從資源包複製到Documents文件夾,然後更新/從該文件中提取數據。 所有的更新,創建表,插入算法在我的應用程序中工作得很好。避免在更新ios中的本地數據庫時進行硬編碼
我只是想改善。我有超過7個表,每個表都有不同的屬性。現在,我有我的代碼,以指定的每個更新語句,像(只是一個例子):
// for table A
const char* sql = "update tableA Set attA1 = ?, attA2 = ? where att0 = ?";
// .. other code here ...
// bind it - this is the part where i am confused.
// each table has different attribute.. So each table will have each binding snippet?
if(sqlite3_prepare_v2(database, sql, 267, &stmt, NULL)==SQLITE_OK){
sqlite3_bind_text(stmt, 1, [input1 UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 2, [input2 UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_int(stmt, 3, input0);
}
道歉,如果這聽起來像初學者的問題。是否有可能避免這樣的「硬編碼」?我沒有找到避免硬編碼的方法,但我只是好奇,如果有人有一些見解。 我發現的最接近的帖子是this - 他的情況很好。 我看過很多iOS的sqlite數據庫教程,其中大部分都是這樣做的,因爲他們的例子中只有1個表。
我還在學習,所以請不要太苛刻,如果這是一個明顯的/壞的問題。 :)
你可以使用類似FMDB的東西,或者你可以動態地構建自己的SQL語句。它需要一些規劃和相當數量的編碼才能生成一個「框架」,但它通常是值得的。 –