我正在试图弄清楚是否有更好的方法来做到这一点
Dim cmd As New SqlCommand
Dim sel As String
Dim obj As New DataHandler
sel = String.Format("SELECT * FROM Customers WHERE Country LIKE '{0}%'", txt_Input.Text)
cmd.CommandText = sel
Me.dgv_Customers.DataSource = obj.SqlDataRetriever(cmd)
基本上我想要做的是有一个文本框,每当我输入一个字母时,网格会通过向我的SQL服务器发送一个查询来刷新自己,使用SQL中的LIKE()在文本框中搜索它。我一直在阅读有关SQL注入的内容,到目前为止,每个人都建议使用参数值(@value)进行用户输入,但是如果我尝试用它替换{0}则不起作用。我只是想确保这是一种有效的方法。
由于
答案 0 :(得分:0)
相反,只需连接下面的字符串。您应该考虑使用参数化查询来避免SQL注入。
sel = "SELECT * FROM Customers WHERE Country LIKE '" + txt_Input.Text + "%'";
请使用参数化查询。见This Post
Dim cmd as New SqlCommand("SELECT * FROM Customers WHERE Country LIKE @param")
cmd.Parameters.Add("@param", txt_Input.Text +"%")