Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Sqlite3-由命令行创建的列,但不是来自我的Android代码_Java_Android_Sqlite - Fatal编程技术网

Java Android Sqlite3-由命令行创建的列,但不是来自我的Android代码

Java Android Sqlite3-由命令行创建的列,但不是来自我的Android代码,java,android,sqlite,Java,Android,Sqlite,我正在从事一个拥有内部Sqlite数据库的项目。我添加了一个新表(表1) 通过shell和android在其中插入和删除一些新值,使用1列(column1)。我试图通过命令行添加两个新列column2和column3,并通过shell调用: **PRAGMA table_info(Table1);** 我发现创建两个新列是正确的,因为我得到了以下输出: *0|column1|varchar(20)|1||1 1|column2|varchar(255)|1||0 2|column3|varch

我正在从事一个拥有内部Sqlite数据库的项目。我添加了一个新表(表1) 通过shell和android在其中插入和删除一些新值,使用1列(column1)。我试图通过命令行添加两个新列column2column3,并通过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和android之间的区别。有什么提示可以理解什么是错误的吗

有什么提示可以理解什么是错误的吗

问题可能与db和游标有关

但正如我的建议,如果您想升级db(不同的版本号),这意味着要执行一些更改(添加/删除/修改列、关系等),您应该使用直接指定用于类似您的目的的方法,或者也可以使用经典的
ALTER TABLE
子句

我不建议您通过shell使用
PRAGMA

注: 对于“保证”,请尝试在应用程序中执行简单查询:

String query = "pragma table_info(Table1)";
c = db.rawQuery(query, null);
if (c.moveToFirst()) {
   do {
      String name = c.getString(c.getColumnIndex("name"));
      String type = c.getString(c.getColumnIndex("type"));
      Log.i("Information", name + " " + type);
   } while (c.moveToNext());
}

通过这个你可以找到你的问题所在。若它只显示一列,那个么问题是db。否则,问题是光标。

它现在可以工作了。我忘记编辑传递给此方法的参数
,该方法返回
光标

 db.query();

其他答案有助于解决这个问题。

如何创建游标?游标游标=db.query(“表1”,列,条件,null,null,null,null);而(cursor.moveToNext()){。。。