vb.net从字符串末尾修剪单词

时间:2016-04-06 15:04:32

标签: sql vb.net

我正在尝试使用循环

在我的vb.net应用程序中运行SQL查询
SQL = "SELECT * FROM table WHERE "
For m = 1 To num_array
    SQL = SQL & "type = '" & array(m, 1) & "' OR "
Next

但最后显示OR

如何从我的查询中修剪最后OR

1 个答案:

答案 0 :(得分:3)

这似乎是StringBuilder的工作

Dim sql = new StringBuilder("SELECT * FROM table WHERE ")
For m = 1 To num_array
    sql.Append("type = '" & array(m, 1) & "' OR ")
Next

If num_array > 0 Then
    sql.Length -= 4
End If

但是,您应该特别注意字符串连接。看起来您的数组不包含数字而是字符串,因为您将所有内容放在单引号之间,这意味着您的类型字段是字符串而不是数字。
当然,我希望您的数组内容不会被您的用户直接插入,否则您将面临一个很大的安全风险,称为Sql Injection。无论如何看看如何构建参数化查询。

像这样的东西

Dim prms = New List(Of SqlParameter)()
Dim num_Array = 4
Dim sql = New StringBuilder("SELECT * FROM table WHERE ")
For m = 1 To num_array
    sql.Append("type = @p" & m & " OR ")
    prms.Add(New SqlParameter("@p" & m, array(m, 1)))
Next

If num_array > 0 Then
    sql.Length -= 4
End If 
Dim cmd = new SqlCommand(sql.ToString(), connection)
cmd.Parameters.AddRange(prms.ToArray())