Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.NET C MVC-如何使用倍数表显示查询结果_C#_Sql Server_Asp.net Mvc - Fatal编程技术网

C# Asp.NET C MVC-如何使用倍数表显示查询结果

C# Asp.NET C MVC-如何使用倍数表显示查询结果,c#,sql-server,asp.net-mvc,C#,Sql Server,Asp.net Mvc,我正在执行以下代码: public ActionResult BranchUser(int ? idBranch) { CtrForm objCtrForm = new CtrForm(); objCtrForm.Connect(); objCtrForm.query.Connection = objCtrForm.connection; objCtrForm.query.Comman

我正在执行以下代码:

public ActionResult BranchUser(int ? idBranch)
        {
            CtrForm objCtrForm = new CtrForm();
            objCtrForm.Connect();
            objCtrForm.query.Connection = objCtrForm.connection;
            objCtrForm.query.CommandType = CommandType.Text;
            List<tblUser> listBranchUser = new List<tblUser>();
            string sql = @"SELECT B.name, B.phone, B.email, B.idUser FROM tblBranchUser A
                           INNER JOIN tblUsers B ON A.idUser = B.idUser
                           WHERE A.idBranch = " + idBranch;
            objCtrForm.query.CommandText = sql;
            objCtrForm.connection.Open();
            SqlDataReader sReader = objCtrForm.query.ExecuteReader();            
            while (sReader.Read())
            {
                listBranchUser.Add(
                    new tblUser
                    {
                        idUser = Convert.ToInt32(sReader["idUser"]),
                        name = Convert.ToString(sReader["name"]),
                        phone = Convert.ToString(sReader["phone"]),
                        email = Convert.ToString(sReader["email"])
                    }
                    );
            }
            objCtrForm.connection.Close();
            return View(listBranchUser);
        }
但我调用函数时出现以下错误:

System.Data.SqlClient.SqlException:“=”附近的语法不正确。”


我不明白为什么会这样,因为我在其他函数中执行了,但我只调用了一个表,而不是两个表。任何建议我都会很感激。

我相信C不会隐式地将整数转换为字符串

试着替换

string sql = @"SELECT B.name, B.phone, B.email, B.idUser FROM tblBranchUser A
                           INNER JOIN tblUsers B ON A.idUser = B.idUser
                           WHERE A.idBranch = " + idBranch;


idBranch可以为空-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入-从技术上检查,在这种情况下,不可能注入SQL,但很可能形成生成错误的SQL,从而导致此处的语法错误。使用参数是避免发生真实/恶意SQL注入的统一做法。。避免像这样愚蠢的编程边缘案例。Thk,你的建议有效。但我也有另一种方法来修复。字符串sql=@SELECT B.name、B.phone、B.email、B.idUser FROM tblBranchUser A internal JOIN tblUsers B ON A.idUser=B.idUser,其中A.idBranch=@idBranch;query.Parameters。Add@idBranch,SqlDbType.Int.Value=idBranch;
string sql = @"SELECT B.name, B.phone, B.email, B.idUser FROM tblBranchUser A
                           INNER JOIN tblUsers B ON A.idUser = B.idUser
                           WHERE A.idBranch = " + idBranch.ToString();