私は現在アンドロイドアプリで私の最終年度のプロジェクトをやっています。私は、ログインモジュールを作ってみましたが、それはいつも私にその部分のエラーを与える:カーソル索引オフアウトセクション
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
「1のサイズ」は、私が取得しようとするユーザデータです。しかし、ここからどこに行くのか分かりません。誰も私がこの問題を解決するのを手助けできますか?そうでなければ、d.move
を使用することができ、
Cursor c = agentDatabase.rawQuery("SELECT COUNT(username) FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = ? AND " +KEY_PASSWORD + " = ?", new String[]{user, pass});
String result = "";
if(c != null && c.moveToPosition(0)){
//if (c.moveToFirst()){
int r = c.getCount();
if(r == 1){
//Cursor d = agentDatabase.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = '" + user + "'", new String[]{ KEY_ROWID, KEY_NAME, KEY_EMAIL, KEY_USERNAME});
Cursor d = agentDatabase.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = ?", new String[]{user});
int iRow = d.getColumnIndex(KEY_ROWID);
int iName = d.getColumnIndex(KEY_NAME);
int iEmail = d.getColumnIndex(KEY_EMAIL);
int iUser = d.getColumnIndex(KEY_USERNAME);
result = result + d.getString(iRow) + " " + d.getString(iUser) + " " + d.getString(iName) + " " + d.getString(iEmail) + "\n";
}
//}
}
return result;
}
私はAndroidデータベースについて何も知らないけど、 'd 'に' .moveToPosition'も必要ないのですか? – Ryan
確かに、c.moveToFirst()はちょっといいです –
値を取得する前に 'd.moveToFirst()'を試してみてください。 –