我正在开发一个家庭作业待办事项应用程序,我想在家庭作业旁边显示教授的联系信息。每个作业都有一个类 ID 值,它是类表的外键,它具有教授表的外键,其中包含我正在寻找的信息。我觉得这段代码应该可以工作,但它没有返回任何结果。
这是查询代码:
字符串 selectQuery = "SELECT " + KEY_CLASS_PROF +" FROM " + TABLE_CLASS + " , " + TABLE_ASSGN + " WHERE " + KEY_CLASS_ID + " = " + KEY_ASSGN_CLASS + " AND "+ KEY_ASSGN_ID + " = " + assgn_id;
Log.d(LOG, selectQuery); SQLiteDatabase db = this.getReadableDatabase(); Cursor c = db.rawQuery(selectQuery, null); if (c == null) Log.d(LOG,"c is null! Why is c null?"); if (c != null && c.moveToFirst()) { Log.d(LOG,"Cursor" + c.getPosition()); thisProf = c.getInt(c.getColumnIndex(KEY_CLASS_PROF)); Log.d(LOG,"thisProf is " + thisProf); } else Log.d(LOG,"returned null!");
和结果日志:
11-12 21:51:14.508: D/DatabaseHelper(622): SELECT * FROM ClassTable , AssignmentTable WHERE classid = fk_classid AND assignmentid = 2
11-12 21:51:14.508:D/DatabaseHelper(622):返回 null!
所以 c 不为空,但 (c != null && c.moveToFirst()) 返回 false。这真让我抓狂。任何帮助表示赞赏。
编辑:我想通了,结果返回了 0 个结果,所以即使 c 不为空,c.moveToFirst() 也是假的,因为没有第一个结果可以移动!