我正在创建我的第一个安卓应用程序,但我在使用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);