Android: сохранить в SQLite строку с символом '

Возможный дубликат:
Как экранировать специальные символы, такие как ' в sqlite в android

Я использую форму для хранения некоторых значений в базе данных Android SQLite. Если какое-либо из полей содержит символ ', возникает ошибка, поэтому я попытался ее избежать, но ошибка все еще существует.

Это мой код:

public boolean createCalendar(String id, String name, String descr) {
    try{
        String newDescr = descr.replace("'", "\\'");
        db.execSQL("INSERT INTO Calendar (id, name, description) VALUES " +
                "('"+id+"','"+name+"','"+newDescr+"');");
       ...
    }
}

И это ошибка:

sqlite returned: error code = 1, msg = near "siksjs": syntax error, db=/data/data/com.pfc.app/databases/SSDB
android.database.sqlite.SQLiteException: near "siksjs": syntax error: , while compiling: INSERT INTO Calendar (id, name, description) VALUES ('43779fcb-3d8c-650b-b529-50810506375e','kdldlls','ddk \' siksjs');

Как мне его хранить?

Спасибо!


person PX Developer    schedule 19.10.2012    source источник
comment
используйте DatabaseUtils.sqlEscapeString(String) согласно этому ответу. Он был разработан именно по этой причине.   -  person Richard Le Mesurier    schedule 02.07.2015


Ответы (1)


Использовать

p_query = "select * from mytable where name_field = ?";
mDb.rawQuery(p_query, new String[] { uvalue });

Or

String newDescr = descr.replaceAll("'", "''");
person Amit Hooda    schedule 19.10.2012
comment
stackoverflow.com/questions/12615113/ - person Yaqub Ahmad; 19.10.2012