0

在表 SQLite 中。我有一个字符串列表,我在列表视图中看到我删除每条记录的按钮。

但是,如果例如在书面记录中和“caffè”这个词一切正常,但如果写有“caffe”这个词,应用程序会崩溃,为什么?谢谢

String nome = tv.getText().toString();
            SQLiteDatabase db = mHelper.getWritableDatabase();
            db.delete(NomeTable.TABLE_NAME, NomeTable.NOME_CAT + "='" + nome_cat + "'", null);
            db.close();
            finish();
4

2 回答 2

1

这是因为 ' 是 SQL 中的特殊字符。

所以你最终='caffe''会因为双''而无效。

您也想使用 whereArgs 参数。

db.delete(NomeTable.TABLE_NAME, NomeTable.NOME_CAT + "= ?", new String[]{nome_cat});

这将为您逃脱您的 ' 角色,并且不应该弄乱您的SQL。

于 2013-10-08T09:43:33.733 回答
0

我认为nome_cat包含一些 SQL 语法不允许的符号。您可能想要使用SQLiteQueryBuilder来构建您的查询。

于 2013-10-08T09:40:09.813 回答