myname="......." '从某个方式得到值, 值中包含有最原始的双引号(但是不知道双引号在myname中的位置)
然后用这个值去匹配数据库里的字段
sql(1)
sql="select * from [biao] where ziduan='"&myname&"'"
sql(2)
sql="select * from [biao] where ziduan="""&myname&""""
注意: 数据库里的字段ziduan里,也包含最原始的双引号("),现在要进行匹配, 出错.
怎么改写这个SQL语句?
11 个解决方案
#1
只有拆分字符串了
#2
怎么拆分?
#3
简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试,
相当于转义
相当于转义
#4
转义符号。sql 转义符号 百度搜索下
#5
Access不支持replace
#6
在字段内容里有 双引号 怎么转义?
#7
Access不支持replace
NO,在VBA环境下可以,在ADO连接MDB下不能使用
NO,在VBA环境下可以,在ADO连接MDB下不能使用
#8
access 不支持replace,可以VBscript支持啊。
sql="select * from [biao] where ziduan='" & replace(myname,"'","''") & "'"
sql="select * from [biao] where ziduan='" & replace(myname,"""","""""") & "'"
#9
select * from [user] where name='"cds"' 直接ok了
#10
关于此主题请参考:
简单方案:Ado本身也能防SQL漏洞。
http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3
用COMMAND对象,ADO 会自己帮你转换引号的
简单方案:Ado本身也能防SQL漏洞。
http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3
用COMMAND对象,ADO 会自己帮你转换引号的
#11
正规应该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();
}
也可以用替换法,加入转义符号。
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();
}
#1
只有拆分字符串了
#2
怎么拆分?
#3
简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试,
相当于转义
相当于转义
#4
转义符号。sql 转义符号 百度搜索下
#5
Access不支持replace
#6
在字段内容里有 双引号 怎么转义?
#7
Access不支持replace
NO,在VBA环境下可以,在ADO连接MDB下不能使用
NO,在VBA环境下可以,在ADO连接MDB下不能使用
#8
access 不支持replace,可以VBscript支持啊。
sql="select * from [biao] where ziduan='" & replace(myname,"'","''") & "'"
sql="select * from [biao] where ziduan='" & replace(myname,"""","""""") & "'"
#9
select * from [user] where name='"cds"' 直接ok了
#10
关于此主题请参考:
简单方案:Ado本身也能防SQL漏洞。
http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3
用COMMAND对象,ADO 会自己帮你转换引号的
简单方案:Ado本身也能防SQL漏洞。
http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3
用COMMAND对象,ADO 会自己帮你转换引号的
#11
正规应该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();
}
也可以用替换法,加入转义符号。
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();
}