我正在使用SQLite数据库的iOS应用程序。检查sqlite列的类型
在我的产品的下一个版本中,我想将表列从TEXT
迁移到BLOB
。 我打算做一个DROP TABLE
后跟一个CREATE TABLE
(我们输不起的数据,是不是这里的问题)
我的问题是:我怎么能简单地从Objective-C的检查表的列类型TEXT
或BLOB
?
我正在使用SQLite数据库的iOS应用程序。检查sqlite列的类型
在我的产品的下一个版本中,我想将表列从TEXT
迁移到BLOB
。 我打算做一个DROP TABLE
后跟一个CREATE TABLE
(我们输不起的数据,是不是这里的问题)
我的问题是:我怎么能简单地从Objective-C的检查表的列类型TEXT
或BLOB
?
SQLite是“无类型”。这意味着您可以将任何类型的数据存储在任何表的任何列中,而不管该列的声明数据类型如何。你可以找到更多的信息here.
但是,如果你想获得关于列的声明数据类型的信息,你可以通过使用pragma table_info(table_name)来实现。
例如。
pragma table_info(Setting);
然后,您可以遍历返回的结果集并检查要检查的数据类型。
你为什么需要这张支票?你能赶上先放后开始(这种用途的设置),并更新表格,它会更容易
检查发布后第一次启动:
NSUserDefaults *prefs=[NSUserDefaults standardUserDefaults];
BOOL flag=[prefs boolForKey:SETTINGS_ALREDY_RAN];//will be NO if settings hasn't those parameters, you can change it to version number
感谢您的回答,但我如何才能在发布后获得第一个启动?这似乎也很难测试我的开发环境。 –
将检查附加到我的答案 – aknew
这很容易出错 - 我更喜欢测试表列的_real_特性,而不是在首选项中测试布尔值,这些布尔值由于某种原因或可能与表结构不同步? –
你可以在sqlite3中创建表格时省略数据类型 – zahreelay
感谢您的详细解答!我确实可以在声明为“TEXT”的列中插入二进制数据。无需更新表格。 –