日期:2014-05-18  浏览次数:21109 次

在没有任何数据时进行无效的读取尝试
代码如下:
  protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  {
  Sql_Conn sqlcon = new Sql_Conn();
  string str = "select * from TW_channel";
  SqlCommand cmd = sqlcon.CreateCommand(str);
  SqlDataReader ds = cmd.ExecuteReader();
  this.channel.DataSource = ds;
  channel.DataTextField = "c_name";
  channel.DataValueField = "id";
  channel.DataBind();
  this.t_name.Text = ds["c_name"].ToString();
  ds.Close();
  sqlcon.Close();
   
  }
  }
奇怪的是把this.t_name.Text = ds["c_name"].ToString();删除,这个channel是可以绑定的 也有数据
用这个ds["c_name"]的时候就变成没任何数据了 郁闷了死了
报错如题

------解决方案--------------------
this.t_name.Text = ds["c_name"].ToString(); 
 你并没有取数据呀
------解决方案--------------------
唉。reader的行为啊。。。
绑定完了之后,reader的游标已经读到数据末尾了,你再访问当然读不到啦。。。

如果还不懂,那你先回答个问题:datareader和dataset的区别是啥?
------解决方案--------------------
this.t_name.Text = ds.rows[rowindex]["c_name"].ToString(); 

------解决方案--------------------
引用楼主 jy03070017 的帖子:
channel.DataBind();
this.t_name.Text = ds["c_name"].ToString();