4

例外を防ぐために、SQL 文字列パラメーターでエスケープする必要がある文字の完全なリストが必要です。ObjectDataSource フィルター パラメーターに渡す前に、問題のあるすべての文字をエスケープされたバージョンに置き換える必要があると思います。

4

4 に答える 4

3

いいえ、ObjectDataSource がすべてのエスケープを処理します。パラメータ化されたクエリでも、エスケープは必要ありません。

于 2009-07-09T17:52:03.553 に答える
1

他の人が指摘しているように、誰かがこの質問をする必要があると考えるケースの 99% で、彼らはそれを間違っています。パラメータ化はその方法です。本当に自分自身をエスケープする必要がある場合は、DB アクセス ライブラリがこのための関数を提供しているかどうかを調べてみてください (たとえば、MySQL には がありますmysql_real_escape_string)。

于 2009-07-09T18:38:50.310 に答える
0

これは、アポストロフィを取り除くために使用した方法です。出くわした他の問題のあるキャラクターに対して同じことを行うことができます. (VB.Net の例)

Dim companyFilter = Trim(Me.ddCompany.SelectedValue)

If (Me.ddCompany.SelectedIndex > 0) Then
      filterString += String.Format("LegalName like '{0}'", companyFilter.Replace("'", "''"))
End If

Me.objectDataSource.FilterExpression = filterString

Me.displayGrid.DataBind()
于 2012-04-11T19:04:48.817 に答える