我的代码有点问题。
我尝试从本地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
感谢您的帮助。
答案 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
};