在System.Data.dll中发生了类型为'System.InvalidOperationException'的未处理异常?

时间:2018-11-04 04:30:47

标签: c# sql-server stored-procedures sqlconnection sqlparameters

我遇到错误,不知道为什么!

using(SqlConnection sqlcon = new SqlConnection(con)) 
{
    sqlcon.Open();

    SqlCommand cmd = new SqlCommand("dbo.workScheduleDataGrid", sqlcon);
    cmd = sqlcon.CreateCommand();
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@worker_id", ids[i].worker_id);
    cmd.Parameters.AddWithValue("@day", days[j]);

    SqlDataReader reader = cmd.ExecuteReader();

    if (reader.HasRows) 
    {
        while (reader.Read()) 
        {
            MessageBox.Show("full name is: " + reader.GetInt32(1) + " and field of work is: " + reader.GetString(2) + " in day " + days[j]);
        }
    }
    else 
    {
        MessageBox.Show("No data");
    }

    reader.Close();
}

知道我使用存储过程的方式相同且没有错误,这是什么错误!

1 个答案:

答案 0 :(得分:0)

您应该之一使用此方法:

SqlCommand cmd = new SqlCommand("dbo.workScheduleDataGrid", sqlcon);

此方法

SqlCommand cmd = sqlcon.CreateCommand();

创建命令,但不能全部创建(代码中的第二个分配将覆盖第一个)。

使用第二个选项,您需要指定要单独执行的命令:

cmd.CommandText = "dbo.workScheduleDataGrid";

此外,最好不要忘记放置cmd对象,最好与另一个using语句一起使用。