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

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll?

我收到一个错误,我不知道为什么!

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();
}

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

你应该或者使用这个方法:

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

这个方法

SqlCommand cmd = sqlcon.CreateCommand();

创建命令,但不是同时创建命令(代码中的第二个赋值会覆盖第一个)。

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

cmd.CommandText = "dbo.workScheduleDataGrid";

此外,不要忘记处理 cmd 对象,最好使用另一个 using 语句。