この質問は過去に聞かれたことがありますが、私は過去5日間、SOとWebをトローしています。MySqlDataReader - リーダーが閉鎖されているときに無効な読み込みをしようとしました
私は、C#を使用してMySQLデータベースからレコードを取得しようとしています。
コードは、私がアプリケーションをテストしたDataTable()にデータをバインドしようとすると、
「リーダーが閉じているときに読むために無効な試み」しかし、MySqlDataReaderは、以下の例外にをスローし、罰金コンパイル
問題を診断できませんでした。私が見る限り、読者はそれを読む前に閉鎖されていません。
方法以下の通りです:実際のデータベース接続が正常に動作している
/// <summary>
/// Performs a select statement
/// </summary>
/// <param name="query">String of the SQL Query</param>
/// <param name="parameters">List of SQL Parameters</param>
/// <returns>DataTable</returns>
public DataTable SelectQuery(string query, List<MySqlParameter> parameters)
{
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand cmd = new MySqlCommand(query, connection);
foreach(MySqlParameter p in parameters)
{
cmd.Parameters.Add(p);
}
connection.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
、私はMySqlConnectionにに時計を置いてきたし、それが必要との接続が開いています。私は、MySQL Workbenchでテストしている
string query = "SELECT IDS_USER, USRNM, PSSWRD, USR_SALT FROM factUser WHERE USRNM = ?username";
、それが正しいデータを返しました:
私は、このメソッドに以下のクエリを渡しています。
MySqlCommandを見ると、パラメータはコマンドに追加されているはずです。
私は絶対的に困惑しているので、どんな助けも大歓迎です!
適切なusingステートメントで
を設定するあなたはCommandTypeを=テキストを設定しようとしたことがありますか? – hardkoded
こんにちはkblok、はい私はCommandTypeをテキストに設定しようとしましたが、まだ同じ問題があります – Smithygotlost
どのようにデータテーブルを使用していますか?別のオブジェクトにデータを追加するだけで使用しているのですか、データテーブルがフレームワークで直接使用されていますか? –