java Android Sqlite3列由命令行创建,但不是从我的Android代码创建的
我正在做一个有内部Sqlite数据库的项目。我添加了一个新表(表1) 1列(column1)通过shell和安卓在其中插入和删除一些新值。我试图通过命令行添加两个新列column2和column3,并通过shell调用:
**PRAGMA table_info(Table1);**
我发现创建两个新列是正确的,因为我得到了以下输出:
*0|column1|varchar(20)|1||1
1|column2|varchar(255)|1||0
2|column3|varchar(255)|1||0*
好的。 呼吁
**cursor.getColumnIndex("column1"));**
继续还好吗 如下所示传递另一个参数:
**cursor.getColumnIndex("column2"));**
正在返回-1,例如此列尚未创建。同样的DB,但是shell和安卓的区别。有什么建议可以帮助你理解问题所在吗
# 1 楼答案
问题可能与db和游标有关
但是,正如我的建议,如果你想升级db(不同的版本号),这意味着要执行一些更改(添加/删除/修改列、关系等),你应该使用^{} 方法,该方法直接指定用于类似你的目的,或者也可以使用经典的
ALTER TABLE
子句我不建议您通过shell使用
PRAGMA
注:
对于“保证”,请尝试在应用程序中执行简单查询:
通过这个你可以找到你的问题所在。如果只显示一列,问题是db。如果不是,问题是光标
# 2 楼答案
它现在起作用了。我忘记编辑传递给这个方法的参数
columns
,该方法返回Cursor
其他答案有助于解决这个问题