2011-07-08 6 views
1

私のAndroidアプリがこのエラーでクラッシュし、それを引き起こしているかわからないんだけど:SQLiteExceptionを取得し、私は

E/AndroidRuntime( 315): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x3470a0 
... 
E/AndroidRuntime( 315):  at lee.medical.icu.dataentry.db.PatientInfoDbHelper.getTests(PatientInfoDbHelper.java:163) 

それは、コードのこのビットにつまずくです:

SQLiteDatabase db = dbHelper.getReadableDatabase(); 
String[] columns = {C_LOCATION, C_TESTS}; 
String selection = "? = '?' and ? = '?'"; 
String[] selectionArgs = {C_LAST, lastName, C_FIRST, firstName}; 
Cursor cursor = db.query(TABLE, columns, selection, selectionArgs, 
     null, null, null); // line 163 

は何このエラーは可能性平均?

(ノートのカップル:C_LOCATIONC_TESTSC_LAST、およびC_FIRST列はlastName私のデータベース内にあるとfirstNameは自明であるメソッドの引数です。)

編集:私は周りを再生しなければなりませんでしたantlersoftのソリューションはそれを動作させるためのビットです。場合には他の誰と同じ問題を抱えているが、私の場合の解決策は、selectionに変更した、この質問時につまずく:

String selection = C_LAST + " = ? and " + C_FIRST + " = ?" 

答えて

4

あなたを入れないでください?文字列引数の場合はシングルクォートで指定します。一重引用符で?引数プレースホルダではなくリテラル文字列として扱われます.SQLiteは渡される引数の型を知っていますか?あなたはそれを引用する必要はありません。

あなたが書いた方法には、4つの引数と2つの引数プレースホルダだけがクエリにあり、例外があります。

関連する問題