我正在创建一个应用程序来记录不同班级的作业。每个班级都有自己的唯一ID,因此为每个班级列出的作业不会与其他班级重叠。这是我用来查找特定类的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/