MySqlを使用しているときに、私のaspnetcoreアプリケーションで次のエラーが発生します。ステートメントを使用して接続が開かない
System.InvalidOperationException:接続が有効でオープンである必要があります。
MySql.Data.MySqlClient.MySqlCommand.Throw(例外EX)MySql.Data.MySqlClient.MySqlCommand.CheckState()MySql.Data.MySqlClient.MySqlCommand.ExecuteReaderで
で
(のCommandBehaviorで
)動作)bdtFood.Controllers.PersonController.GetAll(のInt32 ID)でlambda_method(閉鎖、オブジェクトにおいて、オブジェクト[] Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvokerの
d__28.MoveNext()
ここでは、私が使用するコードは、次のとおり
using (var connection = new MySqlConnection(myConnectionString))
using (var command = connection.CreateCommand())
{
command.CommandText = "SELECT * FROM person";
Modells.Person helpPerson;
using (reader = command.ExecuteReader())
{
while (reader.Read())
{
helpPerson = new Modells.Person(reader.GetInt32(0), reader[1].ToString(), reader[2].ToString(), reader[3].ToString(), reader[4].ToString(), reader.GetInt32(5));
persons.Add(helpPerson);
}
}
}
接続は、読者が作用時間オープンであるべきです。そうではありません。デバッグ中は接続が切断されます。 EDIT:MySqlDataReader reader;
がコントローラクラスで宣言されています。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient .sqlconnection.open(v = vs.110).aspx)どこでも見ることができます。 –
あなたはそれを開いていないときに接続が開いていると思いますか? – DavidG
'' 'SqlClient'''は、コマンドを使って接続を開始するときに、自動的にその接続をオープンしません。適切な時に '' '.Open()' ''と '' '.Close()' ''を呼び出すことによって、接続の状態を管理します。 –