2010-12-15 25 views
0

my earlier questionのアドバイスに基づいて、SQLクエリで「WHERE」の後にスペースを追加しました。
しかし、今私のアプリは "強制終了"を取得します。SQLクエリを実行するとアプリケーションが強制終了する

Cursor c = db.rawQuery("SELECT * FROM sharelist WHERE " + "category" + "=" + category,null); 
+1

はあなたが言いたいことを持っていないでした。あなたの質問を適切に記述してください。エラーの詳細を入力します。 – Mudassir

+0

これは彼の以前の質問に対するコメントであると思われる:http://stackoverflow.com/questions/4448512/its-not-returning-the-true-value –

答えて

1

あなたはこのようなクエリを作成する必要があります。

Cursor c = db.rawQuery("SELECT * FROM sharelist WHERE category=?", 
         new String[] {category}); 

これがあなたのために引用し、適切な操作を行うと、SQLインジェクション攻撃からあなたを救うでしょう。

また、強制終了が表示されたときには、未処理の例外が関連付けられています。 LogCatで見ることができます(これはEclipseのDebugパースペクティブで利用可能です)。 Exceptionのタイプとメッセージは、エラーをデバッグするための貴重な情報です。

+0

もし私がこの答えに私自身の質問をしているのであれば、キニアンカキス。私はこの方法でクエリを作成したときにAndroidが空のカーソル(SQLiteExceptionsなし)を返すという慢性的な問題を抱えていました。疑問符を使用せずに別の方法に戻すと、再び機能します。私は何が間違っていますか?このような問題があったため、クエリ文字列を手動で作成して自分自身の入力をサニタイズするだけでした。 –

0

あなたの質問には、kgiannakakisが推奨されています。あなたの問題のために

、次のような単一引用符を使用してcategory値を囲むようにあります。

Cursor c = db.rawQuery("SELECT * FROM sharelist WHERE " + "category" + "='" + category + "'",null); 
関連する問題