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_catSQL構文で許可されていない記号が含まれていると思います。SQLiteQueryBuilderを使用してクエリを作成することをお勧めします。

于 2013-10-08T09:40:09.813 に答える