2016-05-02 7 views
2

これはlong IDを受け取り、指定されたIDと一致する行を返しますが、クエリに何か問題があり、わかりません。何か案は? (ID値を含む列を「ID」と呼びます)特定のIDを持つ行を返すSQLiteテーブルを照会

public Cursor getAllData (long ID) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    long thisID = ID ; 
    Cursor result = db.rawQuery("select * from WHERE ID = " + thisID + DataTableName,null); 
    return result;   
} 
+0

"DataTableName" とは何ですか? –

+0

これはテーブルの名前です – dadadodo

+0

投稿 –

答えて

0

Cursor result = db.rawQuery("select * from " + DataTableName + " WHERE ID = "+thisID,null); 

そして、何@Danail Alexievのは、私が推測するあなたに言いたいことはこれです:

Cursor result = db.rawQuery("select * from " + DataTableName + " WHERE ID = ?",new long[]{thisID}); 
+1

このエラーが発生しています:android.database.sqlite.SQLiteException:コンパイル時に、 "+"の近くに構文エラー(コード1)があります:select * from + jobsTable + WHERE ID = 0 – dadadodo

+1

DataTableNameの後に? – dadadodo

+0

申し訳ありませんあなたがそれを正しいとマークして、それをアップウォークするのを助けてくれたら、あなたがそれを更新したのを見ました:)= –

1

SQLの形式が正しくありません。正しい形式はselect <columns> from <table> where <condition>です。 select * from where <condition><table>のようなものが得られます。

もう1つのアドバイス - SQLクエリを作成するために文字列連結を使用しないでください。それは非常に悪い習慣であり、あなたのアプリをSQLインジェクション攻撃に開放します。これを防ぐには、パラメータ化されたバージョンのクエリメソッドを使用します。次のようにあなたがそれを行う必要があります

+0

回答とアドバイスの両方が大変ありがとうございます – dadadodo

+0

どこでIDを指定しますか? – dadadodo

+0

'あなたのテーブル名>から' select * from id =? 'に行きます。 '?'は後で指定するパラメータ値のプレースホルダです。 'rawQuery'メソッドでJavadocをチェックするか、単に' query'メソッドを使います。 –

関連する問題