我将数据存储在mysql数据库中,我想获取该数据并将其写入C#列表。它确实可以工作并将数据放入我的列表,但是由于某种原因,它会使数据加倍。当我调试时,列表中有36个项目,而数据库中仅存储了18个项目...
用于从数据库获取数据的代码是:
string query2 = $"SELECT odgovor FROM appdb.odgovori WHERE nazivAnkete = '{selected}';";
using (MySqlCommand command = new MySqlCommand(query2, conn))
{
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
//Write data to string list
answerData.Add(reader.GetString(0));
}
}
}
这种奇怪行为的原因可能是什么?我想念什么吗?
编辑我尝试了没有using
块的情况,但仍然执行相同的操作。
answerData.Clear();
//Get the odgovori for the anketa from the database
string query2 = $"SELECT odgovor FROM appdb.odgovori WHERE nazivAnkete = '{selected}';";
MySqlCommand command = new MySqlCommand(query2, conn);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
answerData.Add(reader.GetString(0));
}
reader.Close();
最终尝试不加倍地使用using-block,这可能会引起问题。参见以下示例:
// Create a command object
SqlCommand cmd = new SqlCommand(SQL, conn);
conn.Open();
// Call ExecuteReader to return a DataReader
SqlDataReader reader = cmd.ExecuteReader();
Console.WriteLine("customer ID, Contact Name, " + "Contact Title, Address ");
Console.WriteLine("=============================");
while (reader.Read())
{
Console.Write(reader["CustomerID"].ToString() + ", ");
Console.Write(reader["ContactName"].ToString() + ", ");
Console.Write(reader["ContactTitle"].ToString() + ", ");
Console.WriteLine(reader["Address"].ToString() + ", ");
}
//Release resources
reader.Close();
conn.Close();