宿題の To-Do アプリを開発していて、宿題の横に教授の連絡先情報を表示したいと考えています。各割り当てには、クラス テーブルへの外部キーであるクラス 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 は null ではありませんが、 (c != null && c.moveToFirst()) は false を返します。これは私を夢中にさせています。どんな助けでも大歓迎です。
編集:私はそれを理解しました.0の結果が返されたことが判明したため、 c がnullではなかったとしても、移動する最初の結果がなかったため、 c.moveToFirst() は false でした!