我有一个客户端/服务器应用程序,我的服务器将数据存储在一个MySQL database
,目前我已经建立了连接,并且我在没有队列或其他东西的情况下进行查询。我认为这不是一个好的解决方案,因为当一个MySQLDataReader
打开时,另一个不能同时执行,第一个必须关闭。我想我有两个选择,要么按每个连接,要么DataReader
将我的查询放入队列中逐个执行。
我想知道哪个是最好的,或者有什么方法或东西可以防止导致此错误的错误和异常
已经有一个打开的 DataReader 与此 Connection 关联,必须先关闭它。
这就是我目前进行查询的方式。我首先获得主连接并进行查询。这是我导致上述错误的原因。
string query = "SELECT * FROM users WHERE username = @username";
ServerModel.Database.CheckConnection(); // Get the main connection
MySqlCommand cmd = new MySqlCommand(query, ServerModel.Database);
cmd.Parameters.AddWithValue("@username", username);
UserStatus userStatus;
using (MySqlDataReader dataReader = cmd.ExecuteReader())
{
if (dataReader.Read())
{
...
dataReader.Close();
return userStatus;
}
}
请注意,该服务器可能同时执行数千个查询。考虑一个聊天服务器。