我尝试像其他选择一样转换为int,但是这种情况是多选,而foreach不适用于int类型。我试过这个并且它有效:(但)....
//var id_status = Convert.ToInt32(Request.Form["id_status"]);
var id_status = Request.Form["id_status"];
var id_cliente = Convert.ToInt32(Request.Form["id_cliente"]);
var sql = "SELECT * FROM ativacao INNER JOIN cliente ON ativacao.id_cliente = cliente.id WHERE ativacao.id_cliente =" + id_cliente;
if (id_status != null)
{
foreach (var itemselecionado in id_status)
{
sql = sql + " OR ativacao.status = '" + itemselecionado + "'";
}
}
但是,这个foreach甚至可以使用逗号,即SQL查询无效。
如何获得正确的SQL查询?
SQL变量的最终值:
"SELECT * FROM ativacao
INNER JOIN cliente
ON ativacao.id_cliente = cliente.id
WHERE ativacao.id_cliente =106
AND cliente.id_prospector = 2
AND cliente.id_executivo = 1
AND cliente.ano_cliente = '2015'
--> OR ativacao.status = '4'
OR ativacao.status = ','
OR ativacao.status = '5'
OR ativacao.status = ','
OR ativacao.status = '6' <--
如果我不能很好地解释,我很抱歉,我不太懂英语。
每一个帮助都会受到如此多的赞赏。
答案 0 :(得分:1)
您也可以在此处使用in子句。创建和生成良好的查询也很容易。这是代码:
if (id_status != null)
{
string inClause = " ativacao.status in (";
foreach (var itemselecionado in id_status)
{
if(itemselecionado.Trim() == ",")
{
countinue;
}
inClause += "'" + itemselecionado + "',";
}
inClause = inClause.SubString(0, inClause.Length - 1) + ")";
sql = sql + inClause;
}
修改:您的查询将如下所示。
"SELECT * FROM ativacao INNER JOIN cliente ON
ativacao.id_cliente = Cliente.id WHERE ativacao.id_cliente = 106 AND
cliente.id_prospector = 2
AND cliente.id_executivo = 1 AND cliente.ano_cliente = '2015'
OR ativacao.status in ('4', '5', '6')"
由于
答案 1 :(得分:0)
编辑:您可以在foreach循环中执行此操作:
if(itemselecionado == ',') continue;