5

データベースが空でない場合でも、カーソルは常に null を返します。なんで?そしてそれを解決する方法は?ありがとうございました。

 public StatParcours getOneUserInfo(int id) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(TABLE_USER, new String[] { KEY_USER_ID,
            KEY_STUDN , KEY_STUDBD, KEY_TEACHN, KEY_TEACHBD}, KEY_USER_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);

    StatParcours stat = null;
    if ((cursor!= null)&&(cursor.moveToFirst())){      
        stat = new StatParcours(
            Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), 
            cursor.getString(2),
            cursor.getString(3),
            cursor.getString(4));
    }  
    return stat ;
}      
4

3 に答える 3

2

ユーザー ID を文字列値と比較していますが、ユーザー ID が数字の場合は成功しません。

Android では、文字列値に対してのみクエリ パラメータを使用する必要があります。整数をクエリ文字列に直接埋め込む必要があります。

cursor = db.query(..., ..., KEY_USER_ID + "=" + id, null, ...);
于 2013-08-11T07:28:41.493 に答える
0

カーソルが null であるかどうかを確認する必要があります。そうでない場合は、cursor.getCount() がゼロでないことを確認する必要があります。よろしいですか?

if (cursor!= null && cursor.getCount() > 0 && cursor.moveToFirst()){
    //do something
}

カーソルが null または cursor.getCount() がゼロであるが、データベースが存在し、データが正しい場合は、SQL を検出し、端末または SQL クライアントでコマンドを実行してこの問題を解決する必要があります。

于 2013-08-11T00:05:14.533 に答える