oledb 上的撇号中断搜索?
Apostrophe breaking search on oledb?
我的代码中有一个搜索字符串,每当用户在搜索框中键入内容时 txt_search
我有一个自动更新的数据网格视图。
但是,似乎只是在搜索框中放置一个撇号会导致程序中断。
Dim search As String
search = txt_serial3.Text
dv = ds.Tables(0).DefaultView
bs.DataSource = dv
bs.Filter = "[SerialNumber] = '" & search & "'"
data_excel.DataSource = bs
这是我用来搜索和更新数据网格视图的代码行,有没有
A) 一种修改它以使其拾取撇号或
的方法
B) 一种在搜索框中完全禁用撇号输入的方法?
这是一个典型的 sql 注入错误示例。程序认为单相当是数据的结尾。我使用的一个技巧是用 two single quotes 替换单引号。尝试
bs.Filter = "[SerialNumber] = '" & Replace(search,"'","''") & "'"
扩展罗素的回答。您需要在使用输入之前对输入进行清理。如果不这样做,特殊字符会干扰其他功能。考虑各种可能性,并尝试调整和迎合输入。
如果你只想阻止它们一起输入 ' 而不是替换它,你可以使用这段代码。
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
If keyData = (Keys.Oem7) Then
Return True
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function
所以它的作用是,它捕获每次按下的击键。如果它是 ' 它会完全忽略它。这只是另一种选择,具体取决于您的情况。
我的代码中有一个搜索字符串,每当用户在搜索框中键入内容时 txt_search
我有一个自动更新的数据网格视图。
但是,似乎只是在搜索框中放置一个撇号会导致程序中断。
Dim search As String
search = txt_serial3.Text
dv = ds.Tables(0).DefaultView
bs.DataSource = dv
bs.Filter = "[SerialNumber] = '" & search & "'"
data_excel.DataSource = bs
这是我用来搜索和更新数据网格视图的代码行,有没有
A) 一种修改它以使其拾取撇号或
的方法B) 一种在搜索框中完全禁用撇号输入的方法?
这是一个典型的 sql 注入错误示例。程序认为单相当是数据的结尾。我使用的一个技巧是用 two single quotes 替换单引号。尝试
bs.Filter = "[SerialNumber] = '" & Replace(search,"'","''") & "'"
扩展罗素的回答。您需要在使用输入之前对输入进行清理。如果不这样做,特殊字符会干扰其他功能。考虑各种可能性,并尝试调整和迎合输入。
如果你只想阻止它们一起输入 ' 而不是替换它,你可以使用这段代码。
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
If keyData = (Keys.Oem7) Then
Return True
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function
所以它的作用是,它捕获每次按下的击键。如果它是 ' 它会完全忽略它。这只是另一种选择,具体取决于您的情况。