控制器asp.net mvc5中的简单SQL查询语法错误
本文关键字:SQL 查询 语法 错误 简单 asp net mvc5 控制器 | 更新日期: 2023-09-27 17:53:20
我试图像其他选择一样转换为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' <--
如果我不能很好地解释,我很抱歉,我不太懂英语。
您也可以在这里使用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')"
谢谢
EDIT:您可以在foreach循环中这样做:
if(itemselecionado == ',') continue;