我正在创建一个应用程序来记录不同类(class)的作业。每个类(class)都有自己唯一的 ID,因此为每个类(class)列出的作业不会与其他类(class)重叠。这是我为某个类查找 rowid 的方法。
public int getIdFromClassName(String className){
String query = "SELECT rowid FROM " + CLASSES_TABLE_NAME + " WHERE " + CLASSES_COLUMN_NAME + " = '" + className + "'";
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery(query, null);
return res.getColumnIndex("id");
}
但是,这总是返回值 -1。
关于更改什么以返回正确的 rowid 值有什么想法吗?
编辑:
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table " + CLASSES_TABLE_NAME + " " +
"(id integer primary key, " + CLASSES_COLUMN_NAME + " text)"
);
db.execSQL(
"create table " + ASSIGNMENTS_TABLE_NAME + " " +
"(id integer primary key, " + ASSIGNMENTS_COLUMN_NAME + " text, " + ASSIGNMENTS_COLUMN_TOTAL_POINTS
+ " INTEGER, " + ASSIGNMENTS_COLUMN_CLASS_ID + " INTEGER)");
}
最佳答案
尝试下面的查询来创建一个新的列名 rowID
:
Cursor cursor= db.rawQuery("SELECT *,"+CLASSES_TABLE_NAME +".rowid AS rowID"+" FROM "+CLASSES_TABLE_NAME , null);
在此查询之后,您可以从 rowID
列中获取真正的 rowid
:
while (cursor.moveToNext()) {
long chatRow=cursor.getLong(
cursor.getColumnIndexOrThrow("rowID"));
}
关于java - Android中使用SQLite获取RowID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34817574/