【问题标题】:An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll?System.Data.dll 中出现“System.InvalidOperationException”类型的未处理异常?
【发布时间】:2018-11-04 04:30:47
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试过阅读异常信息

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


【解决方案1】:

你应该要么使用这个方法:

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

或者这个方法

SqlCommand cmd = sqlcon.CreateCommand();

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

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

cmd.CommandText = "dbo.workScheduleDataGrid";

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多