9

Ormlite for Android の文字列をエスケープするネイティブな方法はありますか?

たとえば、文字列: ormlite のエスケープ関数を指定したい場合は、ormlite\ のエスケープ関数として指定する必要があります。

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats)
    .prepare())

UpdateBuilder の escapeValue メソッドを使用してみましたが、「ormlite のエスケープ機能」という変更しかありません。ステートメントの最初と最後に一重引用符を追加します。文字列をエスケープして SQL インジェクションを安全にするためのネイティブ サポートはありますか?

そうでない場合、それを行う方法は何ですか?

ありがとうございました!

4

1 に答える 1

17

UpdateBuilder の escapeValue メソッドを使用してみましたが、「ormlite のエスケープ機能」という変更しかありません。ステートメントの最初と最後に一重引用符を追加します。文字列をエスケープして SQL インジェクションを安全にするためのネイティブ サポートはありますか?

これはよくある質問です。これを行う適切な方法はSelectArg、SQL が ? を使用できるように引数を使用することです。コンストラクトのタイプ。これについて話している別の質問があります。

SelectArg selectArg = new SelectArg(stats);
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare());

select-arg 機能に関するドキュメントは次のとおりです。

編集:

@Moritz が指摘しているように、実際にデータベースを更新している場合は、 を次のように使用することもできSelectArgますUpdateBuilder

SelectArg arg = new SelectArg("Some value");
updateBuilder.updateColumnValue(MY_COLUMN, arg);
于 2011-07-06T14:39:04.407 に答える