12

このクエリを実行すると、「android.database.sqlite.SQLiteException: no such column」が表示されます。エラーは何ですか?

    public Cursor Getupdate(String rid) throws SQLException 
        {

Cursor m1Cursor = db.rawQuery("SELECT _id FROM  Meeting   where meet="+rid , null);
    if (m1Cursor != null) {           
        if(m1Cursor.getCount() > 0)
        {

             m1Cursor.moveToFirst();
        }
    }
 return m1Cursor;
}

ログキャット

05-28 01:22:27.999: E/AndroidRuntime(1411): FATAL EXCEPTION: main
05-28 01:22:27.999: E/AndroidRuntime(1411): android.database.sqlite.SQLiteException: no such column: ttyuhomk: , while compiling: SELECT _id FROM  Meeting where meet=rage
4

5 に答える 5

33

文字列データ型の場合、常にこの'"+rid+"'" のような引用符を使用します。rid は文字列であるため、エラーが発生します。

+ridは、rid が int の場合にのみ使用してください。

于 2013-05-29T17:20:04.257 に答える
19

Where句のチェックでアポストロフィ( ')を使用する必要があります..のように

db.rawQuery("SELECT _id FROM  Meeting   where meet='"+rid+"'" , null);
于 2013-05-29T17:16:09.327 に答える
8

こんな使い方もできます。

db.rawQuery("SELECT _id FROM  Meeting   where meet=?" ,
            new String [] {rid});

これにより、SQL インジェクションの問題も解決されます。

于 2014-09-25T05:13:19.143 に答える
5

または、PreparedStatement を使用して変数をバインドすることをお勧めします。文字列と日付を適切にエスケープします。また、SQL インジェクションの問題にも役立ちます。

于 2013-05-29T17:19:47.507 に答える