我有一张名为transaktions的表格,其中我插入了客户账单和客户编号。我的主键是一个具有标识规范的int id。我的问题是如何选择包含特定customer_nr的所有行并返回所有结果?
现在我正在做:
public string getCustomerTransaktions(string CustNr)
{
using (var cmd = new SqlCommand("select billing_name from [transaktions] where customer_nr = @customer_nr", Connect()))
{
cmd.Parameters.AddWithValue("@customer_nr", custNr);
using (var er = cmd.ExecuteReader())
{
if (er.Read())
{
return (string)er["billing_name"];
}
}
}
return "UNKNOWN";
}
这将只打印与客户nr匹配的第一行,剩下至少20行。有人有任何建议可以帮助我吗? 最诚挚的问候
答案 0 :(得分:4)
同意@Niklas和@Skurmedel,您需要使用循环来处理多个记录并将它们整理在一起,然后再返回它们。
e.g。
public List<string> getCustomerTransaktions(string CustNr)
{
List<string> names = new List<string>();
using (var cmd = new SqlCommand("select billing_name from [transaktions] where customer_nr = @customer_nr", Connect()))
{
cmd.Parameters.AddWithValue("@customer_nr", custNr);
using (var er = cmd.ExecuteReader())
{
while(er.Read())
{
names.Add((string)er["billing_name"]);
}
}
}
return names;
}
答案 1 :(得分:3)
由于您执行return ...
并且您的方法规范几乎将结果限制为一个特定值,因此您永远不会返回多个帐单名称。它会在读取行后立即返回名称,如果没有返回行则返回默认值。
您应该将值放在列表或类似内容中并返回。
答案 2 :(得分:2)
尝试将if更改为
while (er.Read())
答案 3 :(得分:1)
我想一个简单的解决方案是返回整个结果集而不是tring来解决字符串问题。然后遍历调用方法
中的所有项目