【发布时间】:2019-05-16 11:36:26
【问题描述】:
我编写了以下代码来用数据库中的数据填充列表。
public List<Transactie> FillTransacties()
{
try
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT transactieID, opdrachtID, medewerkerID, soort, datum, bedrag FROM Financien", connection);
SqlDataReader transactieinformatie = cmd.ExecuteReader();
List<Transactie> transacties = new List<Transactie>();
while (transactieinformatie.Read())
{
string transactieID = transactieinformatie["transactieID"].ToString();
string opdrachtID = transactieinformatie["opdrachtID"].ToString();
string medewerkerID = transactieinformatie["medewerkerID"].ToString();
string soort = transactieinformatie["soort"].ToString();
string datum = transactieinformatie["datum"].ToString();
string bedrag = transactieinformatie["bedrag"].ToString();
Transactie transactie = new Transactie(transactieID, opdrachtID, medewerkerID, soort, datum, bedrag);
transacties.Add(transactie);
connection.Close();
return transacties;
}
}
catch (InvalidCastException ICE)
{
MessageBox.Show("De data in de database is incorrect", ICE.Message);
return new List<Transactie>();
}
catch (Exception e)
{
MessageBox.Show("Er is een onbekende error opgetreden.", e.Message);
return new List<Transactie>();
}
}
现在我知道问题出在哪里了,我使用 while 循环返回值。但问题是,当我尝试“退回交易”时;在 while 循环之外,List 仅填充 1 个值。
那么我的问题是,我该如何解决这个错误,使数据库将填充数据库中的每一行?
【问题讨论】:
-
为什么要在循环中关闭数据库连接?这不会让读取更多数据变得困难吗?
-
您不能使用这样的简单赋值将多个数据库行值存储在单个变量中。改用数据表
-
@John ,有什么提示可以放在哪里?我是编程新手,所以我承认我犯了很多错误。
-
@CaiusJard 纠正我如果我错了,但这就是你所说的断开层吗?我会调查一下,谢谢。 :)
-
@John 你给了我不少小费,伙计。通过获取 connection.Close() 并退出 while 循环来解决问题。我现在想知道,这是解决它的正确方法还是有其他“最佳实践”来做到这一点?
标签: c# sql error-handling while-loop return-value