被查询的字段中含有双引号的SQL语句怎么写???

fisherboy 2008-12-17 02:37:25
ASP+Access环境:
myname="......." '从某个方式得到值,值中包含有最原始的双引号(但是不知道双引号在myname中的位置)
然后用这个值去匹配数据库里的字段

sql(1)
sql="select * from [biao] where ziduan='"&myname&"'"
sql(2)
sql="select * from [biao] where ziduan="""&myname&""""

注意:数据库里的字段ziduan里,也包含最原始的双引号("),现在要进行匹配, 出错.

怎么改写这个SQL语句?
...全文
1684 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
winner2050 2009-01-08
  • 打赏
  • 举报
回复
正规应该ADO或者ADO.net的参数形式进行操作数据库,才安全。

也可以用替换法,加入转义符号。
public static string SQL_ESC(string InPut)
{
StringBuilder OutPut = new StringBuilder();
OutPut.Append(InPut);
OutPut.Replace("[", "[[]");
OutPut.Replace("%", "[%]");
OutPut.Replace("_", "[_]");
OutPut.Replace("'", "''");

return OutPut.ToString().Trim();
}
changechange 2009-01-05
  • 打赏
  • 举报
回复
关于此主题请参考:
简单方案:Ado本身也能防SQL漏洞。
http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3



用COMMAND对象,ADO 会自己帮你转换引号的
cdshrewd 2008-12-23
  • 打赏
  • 举报
回复
select * from [user] where name='"cds"' 直接ok了
ACMAIN_CHM 2008-12-21
  • 打赏
  • 举报
回复
access 不支持replace,可以VBscript支持啊。

sql="select * from [biao] where ziduan='" & replace(myname,"'","''") & "'" 


sql="select * from [biao] where ziduan='" & replace(myname,"""","""""") & "'" 
WWWWA 2008-12-18
  • 打赏
  • 举报
回复
Access不支持replace
NO,在VBA环境下可以,在ADO连接MDB下不能使用
fisherboy 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zetee 的回复:]
转义符号。sql 转义符号 百度搜索下
[/Quote]

在字段内容里有 双引号 怎么转义?
fisherboy 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 WWWWA 的回复:]
简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试,
相当于转义
[/Quote]

Access不支持replace
zetee 2008-12-18
  • 打赏
  • 举报
回复
转义符号。sql 转义符号 百度搜索下
WWWWA 2008-12-17
  • 打赏
  • 举报
回复
简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试,
相当于转义
fisherboy 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 WWWWA 的回复:]
只有拆分字符串了
[/Quote]

怎么拆分?
WWWWA 2008-12-17
  • 打赏
  • 举报
回复
只有拆分字符串了

7,730

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧