SqlDataReader结果视图返回未定义的somthing

时间:2018-03-28 12:20:43

标签: c# sql-server

我的代码有点问题。

我尝试从本地SQL Server检索数据。连接是正确的,存储过程也是如此。但是当我从SqlDataReader读取行时,它是空的。但是当我看SqlDataReader时,有什么东西可以用?在里面,但不是结果。

SQL查询在SQL Server Management Studio中正常工作。

这是我的代码:

List<Customer> customers = new List<Customer>();

using (SqlConnection conn = new SqlConnection())
{
    conn.ConnectionString = "Server=DESKTOP-U8E1S5I;Database=Queue;Trusted_Connection=true";
    conn.Open();

    SqlCommand command = new SqlCommand("GetCustomers", conn);

    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            customers.Add(new Customer
                          {
                            Name = (string)reader["CustomerName"],
                            WaitingNumber = (int?)reader["CustomerNumber"],
                            EnterTime = (DateTime?)reader["CustomerNumber"],
                            Status = (int)reader["CustomerStatus"]
                          });                        
        }
    }
}

,结果是“Enumeration Yielding No Results”,其中两行包含?:(断点位于reader.read()之前)

Enumeration Yielded No Results

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

默认情况下,SqlCommand的属性CommandType定义为CommandType.Text,由ad-hoc sql使用。您必须通过在命令中设置stored procedure来指定您正在使用CommandType。样本:

SqlCommand command = new SqlCommand("GetCustomers", conn);
command.CommandType = CommandType.StoredProcedure;

不要忘记添加名称空间System.Data

答案 1 :(得分:0)

您需要指定您正在使用存储过程,请参阅下面的

SqlCommand command = new SqlCommand("GetCustomers", conn);
command.CommandType = CommandType.StoredProcedure;

或者

SqlCommand command = new SqlCommand("GetCustomers", conn) {
   CommandType = CommandType.StoredProcedure
};