-1

我正在使用一种从数据库中获取项目列表的方法。我已经使用连接将数据插入数据库并且工作正常,但是在 gridview 中显示数据时会弹出异常。您可以在下面找到使用的方法、将数据绑定到 gridview 的代码以及 gridview 的 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对象中设置 a 。

MySqlCommand cmd = Connection.CreateCommand();
cmd = new MySqlCommand("SELECT * FROM bets ORDER BY date");
cmd.Connection = this.Connection;
于 2012-10-19T08:44:11.170 回答
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 回答
0

只需在 while 循环后关闭 Datareader,例如 dr.close() ,然后将连接 con 分配给您的命令

于 2012-10-19T08:43:43.790 回答