Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 使用While条件执行存储过程时出错_C# - Fatal编程技术网

C# 使用While条件执行存储过程时出错

C# 使用While条件执行存储过程时出错,c#,C#,我这里出错了 “已存在与此命令关联的打开的数据读取器” 请帮我解决这个问题。当您尝试在同一连接上执行存储过程时,您当前正在打开的连接(SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();)上执行读卡器。这就是错误的原因 在while循环中尝试此操作 SqlConnection sqlConn = new SqlConnection(MyClass.GlobalConn()); sqlConn.O

我这里出错了

“已存在与此命令关联的打开的数据读取器”


请帮我解决这个问题。

当您尝试在同一连接上执行存储过程时,您当前正在打开的连接(
SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();
)上执行读卡器。这就是错误的原因

while
循环中尝试此操作

        SqlConnection sqlConn = new SqlConnection(MyClass.GlobalConn());
        sqlConn.Open();

        try
        {
            string getAllBranch = "SELECT iBranch_num,LTRIM(RTRIM(sConstant)) FROM tblgobranch";
            SqlCommand cmdgetAllBranch = new SqlCommand(getAllBranch, sqlConn);
            SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();



            while (dRgetAllBranch.Read())
            {

                SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", sqlConn);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
                cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
                cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
                cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
                cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
                cmd.ExecuteNonQuery();

            }

当您尝试在同一连接上执行存储过程时,当前正在打开的连接上执行读取器(
SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();
)。这就是错误的原因

while
循环中尝试此操作

        SqlConnection sqlConn = new SqlConnection(MyClass.GlobalConn());
        sqlConn.Open();

        try
        {
            string getAllBranch = "SELECT iBranch_num,LTRIM(RTRIM(sConstant)) FROM tblgobranch";
            SqlCommand cmdgetAllBranch = new SqlCommand(getAllBranch, sqlConn);
            SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();



            while (dRgetAllBranch.Read())
            {

                SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", sqlConn);
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
                cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
                cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
                cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
                cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
                cmd.ExecuteNonQuery();

            }

在使用读卡器时,必须使用新的连接对象来执行另一个命令

SqlConnection sqlConnStoredProc = new SqlConnection(MyClass.GlobalConn());
sqlConnStoredProc.Open();

SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", sqlConnStoredProc);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
cmd.ExecuteNonQuery();

sqlConnStoredProc.Close();

在使用读卡器时,必须使用新的连接对象来执行另一个命令

SqlConnection sqlConnStoredProc = new SqlConnection(MyClass.GlobalConn());
sqlConnStoredProc.Open();

SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", sqlConnStoredProc);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
cmd.ExecuteNonQuery();

sqlConnStoredProc.Close();

我认为你们需要在回路中打开连接

    SqlConnection sqlConn = new SqlConnection(MyClass.GlobalConn());
    sqlConn.Open();

    try
    {
        string getAllBranch = "SELECT iBranch_num,LTRIM(RTRIM(sConstant)) FROM tblgobranch";
        SqlCommand cmdgetAllBranch = new SqlCommand(getAllBranch, sqlConn);
        SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();




        while (dRgetAllBranch.Read())
        {
            using(var con = new SqlConnection(MyClass.GlobalConn()))
            {

            con.Open();

            SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", con);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
            cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
            cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
            cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
            cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
            cmd.ExecuteNonQuery();

            }

        }

我认为你们需要在回路中打开连接

    SqlConnection sqlConn = new SqlConnection(MyClass.GlobalConn());
    sqlConn.Open();

    try
    {
        string getAllBranch = "SELECT iBranch_num,LTRIM(RTRIM(sConstant)) FROM tblgobranch";
        SqlCommand cmdgetAllBranch = new SqlCommand(getAllBranch, sqlConn);
        SqlDataReader dRgetAllBranch=cmdgetAllBranch.ExecuteReader();




        while (dRgetAllBranch.Read())
        {
            using(var con = new SqlConnection(MyClass.GlobalConn()))
            {

            con.Open();

            SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", con);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
            cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
            cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
            cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
            cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
            cmd.ExecuteNonQuery();

            }

        }

您只能使用一个SqlCommand。循环前打开,循环后关闭

while (dRgetAllBranch.Read())
        {

            SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", sqlConn);
            cmd.Connection.Open();  //Open
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
            cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
            cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
            cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
            cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
            cmd.ExecuteNonQuery();
            cmd.Connection.Close();  //Close
        }

您只能使用一个SqlCommand。循环前打开,循环后关闭

while (dRgetAllBranch.Read())
        {

            SqlCommand cmd = new SqlCommand("dbo.rvk_GetSalesPerItem", sqlConn);
            cmd.Connection.Open();  //Open
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@piDateFrom", SqlDbType.Int).Value = FromDT1;
            cmd.Parameters.Add("@piDateThru", SqlDbType.Int).Value = ToDT2;
            cmd.Parameters.Add("@BRANCH", SqlDbType.NVarChar).Value = dRgetAllBranch[1].ToString();
            cmd.Parameters.Add("@brNum", SqlDbType.Int).Value = dRgetAllBranch[0].ToString();
            cmd.Parameters.Add("@PluCode", SqlDbType.NVarChar).Value = str1;
            cmd.ExecuteNonQuery();
            cmd.Connection.Close();  //Close
        }

每次调用rvkgetsaleseritem SP时尝试使用新的连接对象。
MyClass.GlobalConn
方法做什么?我的连接字符串连接到我的数据库。每次调用rvkgetsaleseritem SP时尝试使用新的连接对象。
MyClass.GlobalConn
方法做什么?我的连接字符串连接到我的数据库数据库