私はクライアント/サーバーアプリを持っており、サーバーはデータをに保存していますMySQL database
。現在、接続を確立しており、キューなどを使用せずにクエリを実行しています。これは良い解決策ではないと思います。なぜなら、 aMySQLDataReader
が開くと、別のものを同時に実行することができず、最初のものを閉じる必要があるからです。DataReader
毎回接続を作成するか、クエリをキューに入れて 1 つずつ実行するかの 2 つのオプションがあると思います。
どちらが最適か、またはこのエラーの原因となるエラーや例外を防ぐ方法や何かがあるか知りたい
この接続に関連付けられている開いている DataReader が既に存在し、最初に閉じる必要があります。
これは、現在私がクエリを実行している方法です。最初にメイン接続を取得し、クエリを実行します。上記のエラーが発生します。
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;
}
}
このサーバーは、現時点で数千のクエリを実行する可能性があることに注意してください。チャットサーバーについて考えてみてください。