Java Android SQLite-为什么列的字符串返回“null”?

Java Android SQLite-为什么列的字符串返回“null”?,java,android,sqlite,Java,Android,Sqlite,这是我的数据库: private static Database mInstance; String str; private static final String TABLE_NAME = "tasks"; protected static final String COLUMN_ID = "_id"; protected static final String COLUMN_TASK = "task_name"; protected static final String COLUMN_E

这是我的数据库:

private static Database mInstance;
String str;
private static final String TABLE_NAME = "tasks";
protected static final String COLUMN_ID = "_id";
protected static final String COLUMN_TASK = "task_name";
protected static final String COLUMN_EXP = "exp_rate";


private static final String CREATE_TABLE = "CREATE TABLE " 
                            + TABLE_NAME + " (" + COLUMN_ID 
                            + " integer primary key autoincrement, " 
                            + COLUMN_TASK + " TEXT, "+ COLUMN_EXP +" TEXT);"; 
private static final String DATABASE_NAME = "tasks.db";
private static final int DATABASE_VERSION = 1;
我需要得到这个值:“COLUMN\u EXP”的id。但是用这个代码“null”得到

    public void getTaskExp(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_NAME, new String[] { COLUMN_ID,
            COLUMN_TASK , COLUMN_EXP }, COLUMN_ID + "=?",
    new String[] { String.valueOf(id) }, null, null, null, null);
    if (cursor.moveToFirst()) {
        str = cursor.getString(cursor.getColumnIndex(COLUMN_EXP));
    }
     Log.v("hex", "str is " + str);
    cursor.close();
    db.close();
}

我犯的错误在哪里?请帮帮我。谢谢对不起,我的英语不好。

请确保表中有数据。您还可以尝试检查列中的null

大概

if(str != null){
  Log.v("hex", "str is " + str);

}

如果问题仍然存在,请检查此问题

尝试cursor.getString2是否已将数据添加到数据库表中?还有一个问题-是否已将exp_rate列添加到表中的时间晚于其他列?如果是这种情况,则需要增加数据库版本以强制更新以添加列。