sql 字符串参数中应转义哪些字符
我需要一个完整的字符列表,这些字符应该在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不,ObjectDataSource 将为您处理所有转义。 任何参数化查询也不需要转义。
No, the ObjectDataSource will handle all the escaping for you. Any parametrized query will also require no escaping.
正如其他人指出的,在 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
).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
这是我用来摆脱撇号的方法。 您可以对遇到的其他冒犯角色做同样的事情。 (VB.Net 中的示例)
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)