SQLite 找不到列



我正在创建我的第一个安卓应用程序,但我在使用sqlite时遇到了困难。我使用以下代码来创建我的表。它适用于前 3 列(_ID、COL_TITLE 和 COL_MAX),但我似乎无法创建最后一列。

String createTable = "CREATE TABLE " + TaskContract.Entry.TABLE + " (" +
                TaskContract.Entry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                TaskContract.Entry.COL_TITLE + " TEXT NOT NULL, " +
                TaskContract.Entry.COL_MAX + " REAL, " +
                TaskContract.Entry.COL_INCREMENT + " REAL " +
                ");";

我尝试像这样获取列索引:

        Cursor cursor = db.query(TaskContract.Entry.TABLE,
                new String[]{TaskContract.Entry._ID,
                        TaskContract.Entry.COL_TITLE,
                        TaskContract.Entry.COL_MAX},
                TaskContract.Entry._ID + " = ?",
                new String[]{String.valueOf(id)},
                null, null, null);
        int idx_id = cursor.getColumnIndex(TaskContract.Entry._ID); //returns 0
        int idx_title = cursor.getColumnIndex(TaskContract.Entry.COL_TITLE); //returns 1
        int idx_max = cursor.getColumnIndex(TaskContract.Entry.COL_MAX); //returns 2
        int idx_inc = cursor.getColumnIndex(TaskContract.Entry.COL_INCREMENT); //returns -1

如您所见,getColumnIndex 返回 -1 表示COL_INCREMENT

我还尝试像这样读取数据:

cursor.getString(3)

看起来表格只包含 3 列,我不知道我哪里出错了。我尝试更新数据库版本并卸载该应用程序。

还需要在查询中传递TaskContract.Entry.COL_INCREMENT。它目前在您的查询中丢失了。

Cursor cursor = db.query(TaskContract.Entry.TABLE,
            new String[]{TaskContract.Entry._ID,
                    TaskContract.Entry.COL_TITLE,
                    TaskContract.Entry.COL_MAX,
                    TaskContract.Entry.COL_INCREMENT},
            TaskContract.Entry._ID + " = ?",
            new String[]{String.valueOf(id)},
            null, null, null);

最新更新