作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 VB.net 中构建 SQL 查询并编写了一个例程来动态执行此操作。
我想在 where 子句中包含一个数组(大小未知)中的每个项目,如下所示:
Dim person(10) as String
Dim strSQL, strWhereClause as String
person(0) = "John"
person(1) = "Steve"
'...
For i = 0 To UBound(menuNames)
strWhereClause &= "[name] = '" & person(i) & "' OR "
Next
strSQL= "SELECT * FROM [customers] WHERE " & strWhereClause
" OR "
在末尾。有没有一种巧妙的方法来消除它?或者也许是一起解决问题的更好方法。 (我认为
string.join 在这种情况下不起作用,因为数组项前后都有文本。)
strWhereClause = Left(strWhereClause, strWhereClause.Length - 3)
很好,除了它不处理空字符串。毕竟,我不知道我的数组中有多少元素。
最佳答案
你不应该像你那样做,即使你 100% 确定数组中存储了哪些内容,这仍然是一个坏习惯。相反,您应该熟悉使用 parameterized queries .
未经编译测试:
var sb = new StringBuilder();
sb.Append("SELECT * FROM [customers] WHERE ");
for (int i = 0; i < person.Length; ++i)
{
var param = string.Format("NAME{0}", i);
sb.Append(string.Format("[NAME] = @{0}{1}", param, i < person.Length - 1 ? " OR " : string.Empty));
command.Parameters.AddWithValue(param, person[i]);
}
var sql = sb.ToString();
command
.
关于sql - 从字符串中删除最终的 "OR",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410384/
我是一名优秀的程序员,十分优秀!