如何过滤sql语句中的特殊字符
将下面代码插入数据库出现操作符丢失错误(有特殊字符)。插入其他的都正常,
我已经过滤了 " ' 两个字符。怎么还不行啊
字段是是字符型的
要插入数据库的代码如下。
function getpychar(char)
tmp=65536+asc(char)
if(tmp>=45217 and tmp<=45252) then 
getpychar= "A"
elseif(tmp>=45253 and tmp<=45760) then
getpychar= "B"
elseif(tmp>=45761 and tmp<=46317) then
getpychar= "C"
elseif(tmp>=46318 and tmp<=46825) then
getpychar= "D"
elseif(tmp>=46826 and tmp<=47009) then 
getpychar= "E"
elseif(tmp>=47010 and tmp<=47296) then 
getpychar= "F"
elseif(tmp>=47297 and tmp<=47613) then 
getpychar= "G"
elseif(tmp>=47614 and tmp<=48118) then
getpychar= "H"
elseif(tmp>=48119 and tmp<=49061) then
getpychar= "J"
elseif(tmp>=49062 and tmp<=49323) then 
getpychar= "K"
elseif(tmp>=49324 and tmp<=49895) then 
getpychar= "L"
elseif(tmp>=49896 and tmp<=50370) then 
getpychar= "M"
elseif(tmp>=50371 and tmp<=50613) then 
getpychar= "N"
elseif(tmp>=50614 and tmp<=50621) then 
getpychar= "O"
elseif(tmp>=50622 and tmp<=50905) then
getpychar= "P"
elseif(tmp>=50906 and tmp<=51386) then 
getpychar= "Q"
elseif(tmp>=51387 and tmp<=51445) then 
getpychar= "R"
elseif(tmp>=51446 and tmp<=52217) then 
getpychar= "S"
elseif(tmp>=52218 and tmp<=52697) then 
getpychar= "T"
elseif(tmp>=52698 and tmp<=52979) then 
getpychar= "W"
elseif(tmp>=52980 and tmp<=53640) then 
getpychar= "X"
elseif(tmp>=53689 and tmp<=54480) then 
getpychar= "Y"
elseif(tmp>=54481 and tmp<=62289) then
getpychar= "Z"
else '如果不是中文,则不处理
getpychar=char
end if
end function
function getpy(str)
for i=1 to len(str)
getpy=getpy&getpychar(mid(str,i,1))
next
end function

解决方案 »

  1.   

    源代码如下:
    Con = (Replace(Text1.Text, """", Chr(34)))
    Con = Replace(Con, "'", Chr(39))
    MCCmd "Insert into code (Subject,Content,Type,ind) values('" & Text3.Text & "','" & Con & "','" & Combo1.Text & "',#" & Text2.Text & "#)"
    Text1.Text = ""
    Text2.Text = Now()
    Text3.Text = ""
    Combo1.Text = ""
    Rec ("select * from [Type]")
    Combo1.Clear
    While Not Rs.EOF
    Combo1.AddItem Rs(0)
    Rs.MoveNext
    Wend
      

  2.   

    MCCmd是自己定义的函数。执行sql语句的
    Public Function MCCmd(SQL As String)
    Set Cmd = CreateObject("ADODB.Command")
    Cmd.ActiveConnection = Conn
    Cmd.CommandText = SQL
    Cmd.CommandType = 1
    Cmd.CommandTimeout = 0
    Cmd.Prepared = True
    Set MCCmd = Cmd.Execute()
    T = MsgBox("操作成功!", vbOKOnly, "操作成功")
    End Function
      

  3.   

    Con = (Replace(Text1.Text, """", Chr(34)))
    Con = Replace(Con, "'", Chr(39))我晕,你这跟没替换一个样!!替换完之后根本就没变啊!~~~~~~
      

  4.   

    Con = Replace(Con, "'", "''")
    就行了