2

受信トレイから SQLite データベースにテキスト メッセージを挿入しようとしていますが、一部の特殊文字/記号が原因で正しく挿入されません。

私は Stackoverflow でいくつかの質問をしましたが、何も役に立たないようです。

このコードを取得しましたが、機能していません。

data.execSQL("INSERT INTO recor(text) VALUES('"+DatabaseUtils.sqlEscapeString(messag)+"')");

私のデータベースにはフィールドが 1 つしかなく、メッセージの詳細を一緒に挿入しようとしています。詳細 (タイプ、時間、番号、メッセージ) を 1 つの文字列に入れてmessageいます。これrecorがテーブル名です。

これは、try catch ループを使用したときにトーストとして得られるものです。

エラーが近づいています:

"FROM":構文エラー:INSERT INTO recor(テキスト) VALUES("FROM 15555215556 メッセージ:-MSG")

4

2 に答える 2

2

代わりに、DatabaseAdapter の挿入メソッドを使用します。例えば

ContentValues values = new ContentValues();
values.put(COLUMN_NAME, value);
dbAdapter.insert(TABLE_NAME, null, values);

列名が「テキスト」のように見えますか? text は sqlite のキーワードであるため、これは間違っているに違いありません。

于 2012-07-08T18:22:13.643 に答える
0

最終的な SQL 文字列には、挿入する文字列の周りに 2 組の引用符が含まれているように見えるので、DatabaseUtils.sqlEscapeStringメソッドが文字列の周りに独自の引用符を追加すると仮定します。

したがって、コードは次のようになります。

data.execSQL("INSERT INTO recor(text) VALUES("+DatabaseUtils.sqlEscapeString(messag)+")");

于 2012-07-08T18:54:16.413 に答える