sql 字符串参数中应转义哪些字符

发布于 2024-07-26 11:33:03 字数 103 浏览 5 评论 0原文

我需要一个完整的字符列表,这些字符应该在 sql 字符串参数中转义以防止异常。 我假设在将所有有问题的字符传递给 ObjectDataSource 过滤器参数之前,我需要将其替换为转义版本。

I need a complete list of characters that should be escaped in sql string parameters to prevent exceptions. I assume that I need to replace all the offending characters with the escaped version before I pass it to my ObjectDataSource filter parameter.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

刘备忘录 2024-08-02 11:33:03

不,ObjectDataSource 将为您处理所有转义。 任何参数化查询也不需要转义。

No, the ObjectDataSource will handle all the escaping for you. Any parametrized query will also require no escaping.

亚希 2024-08-02 11:33:03

正如其他人指出的,在 99% 的情况下,如果有人认为他们需要问这个问题,他们就做错了。 参数化是必经之路。 如果您确实需要自己转义,请尝试查明您的数据库访问库是否提供了此功能(例如,MySQL 有 mysql_real_escape_string)。

As others have pointed out, in 99% of the cases where someone thinks they need to ask this question, they are doing it wrong. Parameterization is the way to go. If you really need to escape yourself, try to find out if your DB access library offers a function for this (for example, MySQL has mysql_real_escape_string).

天涯离梦残月幽梦 2024-08-02 11:33:03

SQL 在线书籍:
搜索字符串文字:

字符串文字

字符串文字由零个或多个用引号引起来的字符组成。 如果字符串包含引号,则必须将其转义才能解析表达式。 字符串中允许使用除 \x0000 之外的任何两字节字符,因为 \x0000 字符是字符串的空终止符。

字符串可以包含需要转义序列的其他字符。 下表列出了字符串文字的转义序列。

\A
警报

\b
退格键

\f
换页符

\n
新行

\r
回车符

\t
水平制表符

\v
垂直制表符

\"
引号

\
反斜杠

\xhhhh
十六进制表示的 Unicode 字符

SQL Books online:
Search for String Literals:

String Literals

A string literal consists of zero or more characters surrounded by quotation marks. If a string contains quotation marks, these must be escaped in order for the expression to parse. Any two-byte character except \x0000 is permitted in a string, because the \x0000 character is the null terminator of a string.

Strings can include other characters that require an escape sequence. The following table lists escape sequences for string literals.

\a
Alert

\b
Backspace

\f
Form feed

\n
New line

\r
Carriage return

\t
Horizontal tab

\v
Vertical tab

\"
Quotation mark

\
Backslash

\xhhhh
Unicode character in hexadecimal notation

空城之時有危險 2024-08-02 11:33:03

这是我用来摆脱撇号的方法。 您可以对遇到的其他冒犯角色做同样的事情。 (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()

Here's a way I used to get rid of apostrophes. You could do the same thing with other offending characters that you run into. (example in 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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文