我正在尝试使用循环
在我的vb.net应用程序中运行SQL查询SQL = "SELECT * FROM table WHERE "
For m = 1 To num_array
SQL = SQL & "type = '" & array(m, 1) & "' OR "
Next
但最后显示OR
。
如何从我的查询中修剪最后OR
?
答案 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())