2012-04-04 12 views
0

私はAndroidとSQLiteも新しくなっています。私は、DBクエリがDBから特定の行を取得するメソッドを記述しようとしています。選択がnullに設定されている方法のこのバージョンでは正常に動作します:セクションストリングに何かを追加すると、アンドロイドのSQLite DBクエリが壊れますか?

public String anotherTry(){ 
     String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE }; 
     Cursor cursor = db.query(DATABASE_TABLE, columns, null, null, null, null, null); 
     String result = ""; 
     if (cursor != null){ 
      cursor.moveToFirst(); 
      result = result 
     + cursor.getString(0) + "\n" 
     + cursor.getString(1) + "\n" 
      + cursor.getString(2) + "\n"; 
      return result; 
     } 
     return null; 
    } 

を私は選択の引数に何かを入れた場合、それがクラッシュします。例:

public String anotherTry(){ 
     String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE }; 
     Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + "8", null, null, null, null); 
     String result = ""; 


     if (cursor != null){ 
      cursor.moveToFirst(); 
      result = result 
     + cursor.getString(0) + "\n" 
     + cursor.getString(1) + "\n" 
      + cursor.getString(2) + "\n"; 
      return result; 
     } 
     return null; 
    } 

ここで何が問題になりますか?私は8行目を表示しようとしています。 KEY_ROWID + "=" + "8"、KEY_ROWID = "8"などのフォーマットコンボを試しましたが、運はありません。助けてくれてありがとう!

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=8", null, null, null, null); 

または私は何もCursorIndexOutOfBounds bcoz KEY_ID = 8であなたのデータベースに存在しないことを考える:

+0

logcatのエラーは何ですか? – Sunny

+0

私はrevelant LogCatのラインは次のと思います:アンドロイドデータベースCursorIndexOutOfBoundsException:インデックス0が要求され、0のサイズで – kirktoon1882

答えて

0

は、次のコードを試してみてください、私はそれをu

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID+"=?", new String[] {"8"}, null, null, null); 
+0

いいえ、それは動作しませんでした。なぜ私は希望のID番号を選択に入れることができないのですか?なぜあなたは "?"セレクションと新しいセレクションの選択Arg? – kirktoon1882

+0

それは変です。私はSelection引数をKEY_ROWID = "8"に変更し、SelectionArgにはnullを変更しました。その後、EclipseはKEY_ROWIDからFinal修飾子を削除するように指示しました。私はそれをして、少なくともメソッドを実行しますが、私には最初の行しか与えません。最終的に取り除かれると、それはSelection引数を無視してcursor.moveToFirst();に行くと思います。それは何が起こっているのですか?正しく動作するように修正するにはどうすればよいですか? – kirktoon1882

0

のために働くウィルだと思う、followinのコードを試してみてくださいクエリでデータが返されない場合は例外が発生します。KEY_ROWID = 8にデータベースが存在するかどうか確認してください

+0

Sunny、user182022、Chintan Raghwaniに感謝します。私はアプリの起動ごとにDBメソッドを削除していたのでカーソルが範囲外でしたが、自動インクリメントIDは継続していました。私がそれを理解するまでには、IDの600番台に私のDBの10行しかありませんでした!そして、Chintan Raghwaniのセレクションソリューションが最も効果的でした。ありがとう! – kirktoon1882

関連する問題