私はC#のWindowsアプリケーションを実行していて、データレアを使用しようとするとエラーメッセージが表示されます。エラーメッセージは次のとおりです。読み取り中にC#リーダーが閉じられていますか?
"リーダーが閉じているときにCheckDataIsReadyを呼び出す呼び出しが無効です。"
"while"ループに入るまで、コードが正常に機能する停止点と鋸を使用しました。内部に入ると、エラーメッセージが表示されます。
私は以前の読者を閉じずにそれをやろうとしましたが、メッセージは「既に開かれている読者があります」などに変更されました。
conn = new SqlConnection(DBConnectionString);
SqlCommand select_cmd = new SqlCommand("SELECT usrRealname, usrIsowner FROM tblUSERS WHERE usrNum = " + UserID, conn);
SqlCommand select_orders = new SqlCommand("SELECT orderNum, orderBy, orderShipadrs, orderDate, orderTotal FROM tblOrders WHERE orderDeliveryDate is NULL AND fkorderTakenbyusrnum = " + UserID, conn);
conn.Open();
SqlDataReader dr = select_cmd.ExecuteReader();
dr.Read();
CurrentUser User = new CurrentUser(Convert.ToString(dr[0]), UserID, Convert.ToBoolean(dr[1]));
DetailsLabel.Text = String.Format("Welcome {0}, ID number {1}. {2}", User.getname, UserID, User.getOwner);
dr.Close();
SqlDataReader orders = select_orders.ExecuteReader();
while (orders.Read())
{
UnfulfilledOrders CurrentOrder = new UnfulfilledOrders(Convert.ToInt32(dr[0]), Convert.ToString(dr[1]), Convert.ToString(dr[2]), Convert.ToString(dr[3]), Convert.ToInt32(dr[4]));
OrderList.Items.Add(CurrentOrder);
}
私は何をしようとしているのだが、リストボックス(オーダーリスト)にオブジェクトをクラス(UnfulfilledOrders)を追加入力である:
は、ここでは、コードです。
私に不満を抱かせるものは、同じアプリケーションで以前のフォームでこのようなwhileループを使用していて、そこではうまくいきました。 私は本当に何が間違っているのか分かりません。 コードをtwikingして特定の部分を追加または削除しましたが、何も動作していないようです。
明らかにクローズドリーダー 'dr.Close()から読み取り中です。 .... dr [0] '、...あなたは何をすると思いますか? –