1

SQLiteと少しオーダーメイドのSQLに問題があります:

public Cursor getExistingSpeciesDetails(String sub_id, String english_name) {
    Cursor c = mDb.rawQuery(
            "SELECT mobileobs.how_many, mobileobs.comment, mobileobs.sensitive, "
                    + "mobileobs.breeding_evidence from mobileobs "
                    + "WHERE mobileobs.sub_id = '" + sub_id
                    + "' and mobileobs.english_name = '" + english_name
                    + "'", null);
    return c;
}

私の問題は、英語名のアポストロフィ(Cetti's Warbler)がSQLでエラーを引き起こしていることです(Androidアプリを強制的に閉じます)。このタイプの句のアポストロフィを回避する方法はありますか?

前もって感謝します

4

1 に答える 1

8

そのためには、SQLIteのパラメーターインジェクションを使用する必要があります。例えば:

Cursor c = mDb.rawQuery(
            "SELECT mobileobs.how_many, mobileobs.comment, mobileobs.sensitive, "
             + "mobileobs.breeding_evidence from mobileobs "
             + "WHERE mobileobs.sub_id = ? AND mobileobs.english_name = ?"
             , new String[]{sub_id, english_name});

または、入力パラメータを次のように変更します。

Cetti''s Warbler
于 2012-09-24T08:22:18.323 に答える