控制器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'   <--
如果我不能很好地解释,我很抱歉,我不太懂英语。

控制器asp.net mvc5中的简单SQL查询语法错误

您也可以在这里使用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;