我想传递一个数组到一个方法,然后返回一个字符串,我可以使用SQL的WHERE子句。我有以下,它工作得很好。但是有更好的方法吗?我正在寻找两个结果之一;有没有更好的方法来将数组拆分为字符串
WHERE (ColumnName IN (12, 34, 56, 78, 90))
WHERE (ColumnName IN ('12', '34', '56', '78', '90'))
public static string setInSearchFilter(string psSearchFilter, string psColumnName,
string[] paObjectValues, bool pbIsString)
{
string lsDelimiter = "'", lsRetVal = string.Empty, lsObjectValues = string.Empty;
if (!pbIsString)
{
lsDelimiter = string.Empty;
}
if (!string.IsNullOrEmpty(psSearchFilter))
{
lsRetVal = psSearchFilter + " AND ";
}
for (int i = 0; i <= paObjectValues.GetUpperBound(0); i++)
{
lsObjectValues += lsDelimiter + paObjectValues[i] + lsDelimiter;
if (i < paObjectValues.GetUpperBound(0))
{
lsObjectValues += ", ";
}
}
return lsRetVal += "(" + psColumnName + " IN (" + lsObjectValues + "))";
}
见的string.join和很多重复。 FWIW:我推荐使用(动态添加的)占位符,因为SQL是SQL。 – 2012-11-06 21:17:14
您是否查看过参数化查询或其他形式的消毒输入?此代码只是乞求SQL注入攻击。 – tmesser
@YYY - 是的,我会做一个参数化查询。试图让这个工作第一。 – ggrewe1959