检测表是否包含Android/sqlite中的列

pgs*_*rom 4 sqlite android pragma

所以我在市场上有一个应用程序,有了更新,我想在数据库中添加一些列.到目前为止没问题.但我想检测正在使用的数据库是否缺少这些列,如果是这种情况则添加它们.我需要动态完成此操作,而不仅仅是在更新到新版本之后,因为应用程序应该仍然能够导入旧数据库.通常我可以使用PRAGMA查询,但我不知道如何使用Android.我不能使用execSQL,因为它是一个查询,我无法弄清楚如何使用PRAGMA与query() - 函数.

当然,我可以捕获异常,然后添加列,或者在我开始使用它之前始终将列添加到每个表中,但这不是一个简洁的解决方案.

干杯,

Bra*_*ein 12

Pragma有效.作为一个例子,我只是在我的一个Android App DB上尝试过它.

sqlite> pragma table_info (userCommand);

cid name        type    notnull     dflt_value  pk
0   id      INTEGER     0       1
1   description TEXT    0       0
2   message     TEXT    0       0
Run Code Online (Sandbox Code Playgroud)

我们可以看到指定表中有三个字段.id,description和message.

因此,在您的应用中,使用以下内容:

Cursor c = null;
c = RawQuery ("pragma table_info (userCommand)",null); 
// if c has records and is not null then iterate through the records in search of your table name. 
Run Code Online (Sandbox Code Playgroud)

请原谅糟糕的格式.