我在questo modo中创建了一个带有列的数据库:
public class DbHelper extends SQLiteOpenHelper {
static String DATABASE_NAME="calendarioDB";
public static final String CALENDARIO_TABLE="calendario";
public static final String CALENDARIO_ID="idcalendario";
public static final String ANNO="anno";
public static final String MESE="mese";
public static final String DATA="data";
如果我运行select查询
Cursor mCursor = dataBase.rawQuery("SELECT * FROM " + DbHelper.CALENDARIO_TABLE+" WHERE MESE LIKE 'Gen%'and ANNO = "+anno+"", null);
如果我想只提供日期,我应该
Cursor mCursor = dataBase.rawQuery("SELECT DATA FROM " + DbHelper.CALENDARIO_TABLE+" WHERE MESE LIKE 'Gen%'and ANNO = "+anno+"", null);
但应用程序崩溃了。
答案 0 :(得分:0)
java.lang.IllegalStateException:无法从CursorWindow读取第0行col -1。在从中访问数据之前,请确保Cursor已正确初始化。
您正尝试从游标中不存在的列访问游标中的数据。如果列不存在,getColumnIndex()
将返回-1。
答案 1 :(得分:0)
您的列实际上是data
,而不是DATA
。 “DATA”是您正在使用的变量名称。
所以要么:
"SELECT data FROM ...
或
"SELECT" + DbHelper.DATA + " FROM ...