我有一个使用本地数据库功能的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语句。它需要一些规划和相当数量的编码才能生成一个“框架”,但它通常是值得的。 –