2012-06-18 78 views
1

我正在使用SQLite数据库的iOS应用程序。检查sqlite列的类型

在我的产品的下一个版本中,我想将表列从TEXT迁移到BLOB。 我打算做一个DROP TABLE后跟一个CREATE TABLE(我们输不起的数据,是不是这里的问题)

我的问题是:我怎么能简单地从Objective-C的检查表的列类型TEXTBLOB

回答

2

SQLite是“无类型”。这意味着您可以将任何类型的数据存储在任何表的任何列中,而不管该列的声明数据类型如何。你可以找到更多的信息here.

但是,如果你想获得关于列的声明数据类型的信息,你可以通过使用pragma table_info(table_name)来实现。

例如。

pragma table_info(Setting); 

然后,您可以遍历返回的结果集并检查要检查的数据类型。

+0

你可以在sqlite3中创建表格时省略数据类型 – zahreelay

+0

感谢您的详细解答!我确实可以在声明为“TEXT”的列中插入二进制数据。无需更新表格。 –

1

你为什么需要这张支票?你能赶上先放后开始(这种用途的设置),并更新表格,它会更容易

检查发布后第一次启动:

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 
+0

感谢您的回答,但我如何才能在发布后获得第一个启动?这似乎也很难测试我的开发环境。 –

+0

将检查附加到我的答案 – aknew

+0

这很容易出错 - 我更喜欢测试表列的_real_特性,而不是在首选项中测试布尔值,这些布尔值由于某种原因或可能与表结构不同步? –