我正在创建一个应用程序来记录不同班级的作业。每个班级都有自己的唯一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/

10-12 23:51