0

簡単な質問: ケース式は Android で機能しますか? 挿入時にユーザー値をチェックし、それに応じていくつかの変更を行う式を実装しようとしています。INSERT コマンド内の SQLite プロンプトで機能するため、式が構文的に正しいことはわかっています。ただし、Androidで(を使用してSQLiteDatabase.insert())使用しようとすると、式は文字列として扱われます。また、いくつかのコア SQLite 関数を使用して実装しようとしましたが、この新しい式も文字列として扱われます。なぜこれが起こるのか考えていますか?

編集1:rawQuery()これもオプションではありません。メソッドは無視されます。メソッド呼び出しに関連していると思われる logcat メッセージを次に示します

4

2 に答える 2

4

このinsertメソッドは、SQL 式ではなく、すべての値を実際の値として扱います。したがって、次のようなコードを使用する場合:

cv.put("Col1", "CASE X WHEN 42 THEN 'y' END");
db.insert("Tab", null, cv);

その場合、文字列は単なる文字列であり、まさにこの文字列を挿入する必要があると見なされます。これにより、次のような SQL コマンドが生成されます。

INSERT INTO Tab(Col1) VALUES('CASE X WHEN 42 THEN ''y'' END')

insert()設計された単純なケースよりも複雑なことを行う場合は、代わりにrawQueryを使用して、SQL ステートメント全体を手動で作成する必要があります。

于 2013-09-13T13:19:20.843 に答える
0

回答ありがとうございますが、(ドキュメントでは推奨されていませんが)を使用して問題を解決しましたexecSQL()

于 2013-09-15T13:08:58.393 に答える