java - RuntimeException - java.lang.IllegalArgumentException : column '_id' does not exist

标签 java android sqlite

在我的应用程序中,我尝试从数据库中的表中读取数据,该表的创建方式如下:

public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
    String createDreamTable = String.format("CREATE TABLE IF NOT EXISTS %s" +
            "( %s INTEGER PRIMARY KEY AUTOINCREMENT, " +
            "%s VARCHAR, " +
            "%s TEXT);",
            DreamContract.Dream.DREAM_TABLE_NAME,
            DreamContract.Dream._ID,
            DreamContract.Dream.COLUMN_NAME_DREAM_TITLE,
            DreamContract.Dream.COLUMN_NAME_DREAM_CONTENT);
    Log.d("avirankatz", createDreamTable);
    db.execSQL(createDreamTable);
}

当我尝试使用 GetDreamTitles 从数据库获取数据时,如下所示,我得到 java.lang.IllegalArgumentException: column '_id' does not exist

public Cursor getDreamTitles() {
    return getReadableDatabase().rawQuery(String.format("SELECT %s FROM %s", DreamContract.Dream.COLUMN_NAME_DREAM_TITLE, DreamContract.Dream.DREAM_TABLE_NAME), null);
}

编辑:

DreamContract.Dream :

public static abstract class Dream implements BaseColumns {
    public static final String DREAM_TABLE_NAME = "dreamDiary";
    public static final String COLUMN_NAME_DREAM_TITLE = "title";
    public static final String COLUMN_NAME_DREAM_CONTENT = "dreamContent";
}

最佳答案

在查询中添加主键 _id,如下所示

getReadableDatabase().rawQuery(
    String.format(
        "SELECT %s, %s FROM %s", 
        DreamContract.Dream._ID, 
        DreamContract.Dream.COLUMN_NAME_DREAM_TITLE, 
        DreamContract.Dream.DREAM_TABLE_NAME
    ), 
    null
);

关于java - RuntimeException - java.lang.IllegalArgumentException : column '_id' does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093702/

相关文章:

java - 与java中的多线程同步会影响使用时间。如何解决这个问题

java - 子类可以使用相同的方法,但具有不同的变量类型吗?如何? (Java)

java - 是否可以使基于 Swing 的应用程序独立于屏幕分辨率

sqlite - 可以创建按星期几排序的查询吗?

android - 我如何在 SQLite android 中使用 Like 查询

sqlite - Dart-使用泛型将List <SuperType>转换为List <SubType>

java - Java 泛型中的错误

java - 将 Android Gitlab CI/CD 管道从 Java 1.8 更新到 Java 11?

android - 如何在 Android 中维护多个页脚 View ?

android - phonegap 简单示例在 android 模拟器中不起作用