2

編集:問題は解決しました...そして質問の言い回しとは無関係です...時間の無駄をお詫びします:-\

iOSやAndroidなどのプラットフォーム(電話アプリを作成している場合)にこのためのツールがある場合、通常は、ある種の抽象化レイヤーを使用し、SQLite用の独自の挿入ステートメントを作成したくないと思います。

残念ながら、私が自由に使えるツールと関連するさまざまなプラットフォーム/システムの数のために、これが実際にはオプションではない状況にあります。

私が抱えている問題は本当に単純ですが、グーグルやスタックオーバーフローなどで答えを見つけることができないようです... Webkitの「executeSql」コマンドを使用して、次のクエリのようなことをしたいだけです。

INSERT INTO someTable VALUES (''some string'', ''some string with a semicolon; in it'');

問題は-セミコロンを削除しない限り、これは失敗します。(注:一重引用符が2倍になっているのは、webkitのexecuteSqlコマンドに送信されるステートメントをエスケープする必要があるためです。おそらくこれは問題の一部ですか?)

2番目のフィールドの文字列からセミコロンを削除すると、ステートメントは正常に実行されます...

バックスラッシュでセミコロンをエスケープすると、運が悪くなります。

sqliteのドキュメントはせいぜい平凡なようで、そのセミコロンをどのようにエスケープするのか理解できませんでした...どんな助けでも大歓迎です。

4

1 に答える 1

3

これは正常に機能します。

CREATE Table DummyTable(FirstCol VARCHAR(25), SecondCol VARCHAR(25));
INSERT INTO DummyTable VALUES ('This is a test', 'This is test two; OK?');
SELECT * FROM DummyTable;

-- output
FirstCol                  SecondCol
========================= ========================= 
This is a test            This is test two; OK?

問題は、SQLステートメントの引用符が2倍になっていることのようです。

于 2012-05-23T22:57:18.617 に答える