VB的函數問題..麻煩進來下.
处理Select语句中的单引号
在数据库应用中, 经常要动态生成 Select 语句,典型的情况:
SqlString = "Select * from myBas where Name = '" & Text1 & "'"
好啦, 问题出现了, 如果在录入的 Text1 中有一个单引号,结果是把 SqlString 发给数据库时, 将出错!
其实要做的防范很简单, 增加一个函数:
FUNCTION CheckString (s) as String
pos = InStr(s, "'")
While pos > 0
s = Mid(s, 1, pos) & "'" & Mid(s, pos + 1)
pos = InStr(pos + 2, s, "'")
Wend
CheckString="'" & s & "'"
END FUNCTION
以后在动态生成 Select 语句, 使用:
SqlString = "Select * from myBas where Name = " & CheckString(Text1)
在数据库应用中, 经常要动态生成 Select 语句,典型的情况:
SqlString = "Select * from myBas where Name = '" & Text1 & "'"
好啦, 问题出现了, 如果在录入的 Text1 中有一个单引号,结果是把 SqlString 发给数据库时, 将出错!
其实要做的防范很简单, 增加一个函数:
FUNCTION CheckString (s) as String
pos = InStr(s, "'")
While pos > 0
s = Mid(s, 1, pos) & "'" & Mid(s, pos + 1)
pos = InStr(pos + 2, s, "'")
Wend
CheckString="'" & s & "'"
END FUNCTION
以后在动态生成 Select 语句, 使用:
SqlString = "Select * from myBas where Name = " & CheckString(Text1)
現在比如上面的s為: s=abc'def
pos = InStr(s, "'")
While pos > 0
s = Mid(s, 1, pos) & "'" & Mid(s, pos + 1)
pos = InStr(pos + 2, s, "'")
那么pos=4吧.s=abc''def ,注意中间是两个单引号..那么最后一句的pos=instr(pos+2,s,"'")是什么意思呢..?
pos=(6,s,"'") ..?结果是怎样的.?
麻烦会的朋友指教一下..