我的连接工作正常。但是,当它运行到MysqlDataREader dataReader行时,它会显示Window Form并且不会访问while循环来获取我的数据。我正在使用dataGridView来显示我的数据库中的信息。我做错了什么?感谢
if (this.OpenConnection() == true)
{
//Create Command
MySqlCommand cmd = new MySqlCommand(query, connection);
//Create a data reader and Execute the command
MySqlDataReader dataReader= cmd.ExecuteReader();
//Read the data and store them in the list
while (dataReader.Read())
{
list[0].Add(dataReader["id"] + "");
list[1].Add(dataReader["name"] + "");
list[2].Add(dataReader["weekday"] + "");
list[3].Add(dataReader["description"] + "");
}
//close Data Reader
dataReader.Close();
//close Connection
this.CloseConnection();
}
答案 0 :(得分:1)
命令是什么?
Read()函数使读者前进到下一条记录。如果没有返回记录,那么if将立即为假。
因此该命令很可能不会返回任何内容。你想做这样的事情(HandleRecord只是为了使代码更清洁):
if(reader.Read())
{
// Handle first record
HandleRecord(dataReader)
while(reader.Read())
{
// Handle remaining records
HandleRecord(dataReader)
}
}
else
{
// Nothing was returned, do something
}
您还想处理异常。从提供的代码看来,似乎没有try-catch-finally语句。如果我没记错的话应该是这样的:
try
{
// Contact database - read/write/whatever
}
catch
{
// Display exception to user, log, whatever you need
}
finally
{
// Close database connection and other cleanup
}