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语句中。