0

テーブルから特定のデータを取得したい..クエリを挿入しましたが、エラーが発生しました...そしてアプリがクラッシュします...アクティビティコードは

public Cursor getpicSpecfic(String st)
    {
        return db.query(DATABASE_TABLE_PIC, 
                new String[] {"id", "pic_name", "pic_place","pic_fellows","pic_purpose","pic_location","pic_jeoPoint_longi","pic_jeoPoint_lati","pic_sd_card","pic_time","pic_date"}, 
            "pic_name"+"="+st, null, null, null, null);
    }

logcatのエラーは

01-31 01:43:13.033: E/AndroidRuntime(877): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.imagegallary/com.example.imagegallary.FullImageDetail}: android.database.sqlite.SQLiteException: no such column: nnn (code 1): , while compiling: SELECT id, pic_name, pic_place, pic_fellows, pic_purpose, pic_location, pic_jeoPoint_longi, pic_jeoPoint_lati, pic_sd_card, pic_time, pic_date FROM Img WHERE pic_name=nnn

私は pic 名である文字列 nnn を渡しています..これが nnn 存在することを sqllite ブラウザで確認しました...何か助けてください

4

3 に答える 3

0

非常によくある間違いです。次のように st の周りに
追加してみてください。' '

public Cursor getpicSpecfic(String st)
    {
        return db.query(DATABASE_TABLE_PIC, 
                new String[] {"id", "pic_name", "pic_place","pic_fellows","pic_purpose","pic_location","pic_jeoPoint_longi","pic_jeoPoint_lati","pic_sd_card","pic_time","pic_date"}, 
            "pic_name"+"='"+st + "'", null, null, null, null);
    }
于 2013-01-30T08:56:20.547 に答える
0

このquery()メソッドには、パラメータを使用しないことから直接生じる多くの質問がここで尋ねられることを考えると、ほとんど見落とされているパラメータがあります。

selectionArgs準備され、クエリに挿入される引数のリストです。これを使用すると、クエリがあらゆる種類のインジェクション (自発的であるかどうかにかかわらず) から保護され、すべてがエスケープされるため、非常に優れています。さらに、(理論的には)異なる引数を持つ同じクエリを認識することで、データベースがクエリを最適化するのに役立ちます。

また、クエリを引数なしにすることでクエリを簡素化するため、グループ化、定数化、および個別のレビューが行われやすくなります。

次のように使用されます。

String[] projection = {...}; // your projection
String selection = "pic_name = ?"; // ? is replaced by the selectionArgs in order
String[] selectionArgs = new String[] { st }; // no need to quote, escape or anything
Cursor res = db.query(DATABASE_TABLE_PIC, projection, selection, selectionArgs, null, null, null);
于 2013-01-30T16:45:47.790 に答える
0

' '以下のように where 基準の合格値に一重引用符を追加して、この方法を試してください。

public Cursor getpicSpecfic(String st)
{
    return db.query(DATABASE_TABLE_PIC, 
            new String[] {"id", "pic_name", "pic_place","pic_fellows","pic_purpose","pic_location","pic_jeoPoint_longi","pic_jeoPoint_lati","pic_sd_card","pic_time","pic_date"}, 
        "pic_name"+"="+ "'" + st + "'", null, null, null, null); <<--- see the difference in this line.
}
于 2013-01-30T09:02:44.620 に答える