String.Format vs参数值SQL查询

时间:2015-10-01 03:55:56

标签: sql vb.net

我正在试图弄清楚是否有更好的方法来做到这一点

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}则不起作用。我只是想确保这是一种有效的方法。

由于

1 个答案:

答案 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 +"%")