2012-05-02 3 views
0

私は現在アンドロイドアプリで私の最終年度のプロジェクトをやっています。私は、ログインモジュールを作ってみましたが、それはいつも私にその部分のエラーを与える:カーソル索引オフアウトセクション

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; 
} 
+3

私はAndroidデータベースについて何も知らないけど、 'd 'に' .moveToPosition'も必要ないのですか? – Ryan

+3

確かに、c.moveToFirst()はちょっといいです –

+3

値を取得する前に 'd.moveToFirst()'を試してみてください。 –

答えて

0

は、あなたは結果だけカーソルの1行を期待する場合、これは動作しますフェッチデータ

Cursor d = agentDatabase.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = ?", new String[]{user}); 
d.moveToFirst(); 

前に、最初の行にカーソルを移動する必要があります。ここに私のコードです。

+0

これは答えではありません、最初のコメントを参照してください... –

+0

私はそれを.....両方のCとDを変更しました.....今私はこのエラーが発生します:java.lang.IllegalStateException:Couldn CursorWindowから行0、列-1を読み込みません。 カーソルがデータにアクセスする前に正しく初期化されていることを確認してください – user1370104

+0

この質問を見て、それが役立つかどうかを確認してください。[リンク](http://stackoverflow.com/questions/9029668/android-sqlite-cursor-getcolumnindex-大文字小文字の区別があります) – Eri