問題是你的字符串有一個單引號字符,它會破壞你的SQL查詢字符串。
模擬parametro == test01
- OK
"SELECT titolo, icona, colore, tipo, identificativo, dato_campo FROM table WHERE titolo LIKE '%test01%' OR dato_campo LIKE '%test01%' GROUP BY identificativo";
模擬parametro == stringa'
NOK
"SELECT titolo, icona, colore, tipo, identificativo, dato_campo FROM table WHERE titolo LIKE '%stringa'%' OR dato_campo LIKE '%stringa'%' GROUP BY identificativo";
正如你所看到的,你的字符串是生產'%stringa'%'
這是一個SQL查詢無效。
在查詢期間,您應該將該字符'
轉義爲:%stringa''%'
。
所以,你可以按如下創建您的查詢字符串前加上一句:
parametro = parametro.replaceAll("\'","''");
String sql = "SELECT titolo, icona, colore, tipo, identificativo, dato_campo FROM table " +
"WHERE titolo LIKE '%" + parametro + "%' " +
"OR dato_campo LIKE '%" + parametro + "%' GROUP BY identificativo";
這是一個關於你現在面臨的問題上的支持......正如加布Sechan對對方的回答中提到,生應該不鼓勵查詢。
UPDATE
安全的方式來運行你的查詢是:
String paramentro = "stringa'";
Cursor cursor = db.query("tablename", new String [] {"titolo", "icona", "colore", "tipo", "identificativo", "dato_campo"}, "titolo LIKE ? OR dato_campo LIKE ?", new String[]{"%"+paramentro+"%", "%"+paramentro+"%"}, "identificativo", null, null, null);
請添加您完全崩潰日誌 – USKMobility