Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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 为什么我的getColumnIndex()返回-1?_Java_Android_Database_Sqlite_Cursor - Fatal编程技术网

Java 为什么我的getColumnIndex()返回-1?

Java 为什么我的getColumnIndex()返回-1?,java,android,database,sqlite,cursor,Java,Android,Database,Sqlite,Cursor,好的,下面是我的数据库创建语句: create table entry ( _id integer primary key autoincrement, date integer not null, checknum integer, payee text not null, amount integer not null, category text, memo text, tag text ); 在创建datbase之后,我进行如下调用: mChecknum = curso

好的,下面是我的数据库创建语句:

create table entry (
 _id integer primary key autoincrement,
 date integer not null,
 checknum integer,
 payee text not null,
 amount integer not null,
 category text,
 memo text,
 tag text
);
在创建datbase之后,我进行如下调用:

mChecknum = cursor.getColumnIndex("checknum");
麦克赫克纳姆是-1。我已经从设备中提取了数据库,并在其上使用了SQLite浏览器,checknum字段就在那里

有关的封锁声明:

mDbHelper.open();
Cursor cursor = mDbHelper.fetchAll();
startManagingCursor(cursor);
COL_DATE = cursor.getColumnIndex("date");
Log.v("Main:123", "COL_DATE: " + String.valueOf(COL_DATE) );
COL_CHECKNUM = cursor.getColumnIndex("checknum");
Log.v("Main:125", "COL_CHECKNUM: " + String.valueOf(COL_CHECKNUM) );
COL_PAYEE = cursor.getColumnIndex("payee");

收款日期返回1,收款人返回2。为什么忽略/传递COL_CHECKNUM?

在我的fetch/fetchAll数据库函数中,我忘了用新列更新查询

例如,在添加新列之前,我的fetchAll代码如下所示:

public Cursor fetchAll() {
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_DATE,
            KEY_PAYEE, KEY_AMOUNT, KEY_CATEGORY, KEY_MEMO, KEY_TAG}, 
            null, null, null, null, KEY_DATE + " desc");
}
将新列添加到数据库后,my fetchAll函数如下所示:

public Cursor fetchAll() {
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_DATE, 
            KEY_CHECKNUM, KEY_PAYEE, KEY_AMOUNT, KEY_CATEGORY, KEY_MEMO, KEY_TAG}, 
            null, null, null, null, KEY_DATE + " desc");
}

在fetch/fetchAll数据库函数中,我忘记用新列更新查询

例如,在添加新列之前,我的fetchAll代码如下所示:

public Cursor fetchAll() {
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_DATE,
            KEY_PAYEE, KEY_AMOUNT, KEY_CATEGORY, KEY_MEMO, KEY_TAG}, 
            null, null, null, null, KEY_DATE + " desc");
}
将新列添加到数据库后,my fetchAll函数如下所示:

public Cursor fetchAll() {
    return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_DATE, 
            KEY_CHECKNUM, KEY_PAYEE, KEY_AMOUNT, KEY_CATEGORY, KEY_MEMO, KEY_TAG}, 
            null, null, null, null, KEY_DATE + " desc");
}

在我的情况下,getColumnIndex在名称中包含“.”符号的列上返回错误,即:

int colIndex = cursor.getColumnIndex("Item No.");

尽管列“Item No.”在游标内(调试器监视显示了它),但尝试获取列索引失败。

在我的情况下,getColumnIndex在名称中包含“.”符号的列上返回错误,即:

int colIndex = cursor.getColumnIndex("Item No.");

尽管列“Item No.”在游标内(调试器的监视显示了它),但尝试获取列索引失败。

能否发布更多关于mChecknum的代码?比如光标是如何被创建和使用的?相关:好吧,算了吧。这是我自己的疏忽,我完全忘记了更新fetchAll查询以包含新列。很抱歉,这还是一个新问题。请发布解决方案,这样如果其他人有此问题,他们就会得到答案。我想OP的意思是,有问题的列没有包含在其原始SQL语句中。您可以发布更多关于mChecknum的代码吗?比如光标是如何被创建和使用的?相关:好吧,算了吧。这是我自己的疏忽,我完全忘记了更新fetchAll查询以包含新列。很抱歉,这还是个新问题。请发布解决方案,这样如果其他人有此问题,他们将得到答案。我想OP所说的是,该列未包含在其原始SQL语句中。