-1

データベースからアイテムのリストを取得するメソッドを使用しています。私はすでに接続を使用してデータベースにデータを挿入し、正常に動作しましたが、グリッドビューでデータを表示すると例外がポップアップします。以下に、使用した方法、データをグリッドビューにバインドするためのコード、およびグリッドビューのaspを示します。あなたが助けることができることを願っています。ありがとう

データを取得する方法

public List<Bet> getBets()
        {
            MySqlCommand cmd = Connection.CreateCommand();
            cmd = new MySqlCommand("SELECT * FROM bets ORDER BY date");

            try
            {
                if (this.Connection.State == ConnectionState.Closed)
                    this.Connection.Open();

                MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); --> getting exception here
                List<Bet> bets = new List<Bet>();

                while (dr.Read())
                {
                    Bet myBet = new Bet();
                    myBet = FillBetfromRow(dr);
                    bets.Add(myBet);
                }
                return bets;
            }
            catch (MySqlException ex)
            {
                throw ex;
            }
            finally
            {
                if (Connection.State == ConnectionState.Open)
                    Connection.Close();
            }
        }

データをgridviewにバインドする

gvBets.DataSource = new BetManagement().getBets();
            gvBets.DataBind();
4

3 に答える 3

1

オブジェクトにを設定しConnectionていません。Command

MySqlCommand cmd = Connection.CreateCommand();
cmd = new MySqlCommand("SELECT * FROM bets ORDER BY date");
cmd.Connection = this.Connection;
于 2012-10-19T08:44:11.170 に答える
0

dr.close()のように、whileループの後でDatareaderを閉じて、コマンドに接続conを割り当てます。

于 2012-10-19T08:43:43.790 に答える
0

キーワードの使用で変更してみてください。データリーダーのクローズに問題がある可能性があります

 try
        {
            if (this.Connection.State == ConnectionState.Closed)
                this.Connection.Open();
            List<Bet> bets = new List<Bet>();
            using(MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)){


            while (dr.Read())
            {
                Bet myBet = new Bet();
                myBet = FillBetfromRow(dr);
                bets.Add(myBet);
            }
       }
            return bets;
        }
于 2012-10-19T08:40:56.633 に答える