当前位置:编程学习 > C#/ASP.NET >>

在C#中, OleDbDataReader dr运行时不读,求解!!!

在listbox中,里面显示的文字只能点击第一个(只有一列),之前运行都没问题,但双击listbox出现事件在里面写代码后就出现此问题,新写的代码注释掉问题依旧存在。以下是代码:
private void Form药品名称查询_Load(object sender, EventArgs e)
        {
            List<string> list = new List<string>();
            DataSet ds = new DataSet();
            string sqlstr = "select * from drugName";
            string strAccessConn = ConfigurationSettings.AppSettings["Constr"];
            OleDbDataReader dr;
            OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);

            OleDbCommand myAccessCommand = new OleDbCommand(sqlstr, myAccessConn);
            myAccessConn.Open();
            dr = myAccessCommand.ExecuteReader();

            while (dr.Read())
            {
                list.Add((string)dr["中文名称"]);
            }
            //ds = DataAccess.retSet(sqlstr);
            this.lstDrugName.DataSource = list;
            this.lstDrugName.DisplayMember = "中文名称";

        }

        private void button显示_Click(object sender, EventArgs e)
        {
            string str = lstDrugName.SelectedItem.ToString();
            string strr = "select 药物编码,中文名称,英文名称,别名,适应症,药效学,不良反应 from drugName where 中文名称='" + str + "'";
            //DataSet ds = new DataSet();
            //ds = DataAccess.retSet(strr);
            textBox显示窗口.Text = "";
handle hc = new handle();
            OleDbDataReader dr = hc.selectdn(strr);

            List<string> list = new List<string>();
            while (dr.Read())
            {
                list.Add("药物编码:");
                list.Add((string)dr["药物编码"]);
                list.Add("中文名称:");
                list.Add((string)dr["中文名称"]);
                list.Add("英文名称:");
                list.Add((string)dr["英文名称"]);
                list.Add("别名:");
                if (dr["别名"] == System.DBNull.Value)
                {

                    list.Add("");
                }
                else
                {
                    list.Add((string)dr["别名"]);

                }
                list.Add("适应症:");
                list.Add((string)dr["适应症"]);
                list.Add("药效学:");
                if (dr["药效学"] == System.DBNull.Value)
                {

                    list.Add("");
                }
                else
                {
                    list.Add((string)dr["药效学"]);

                }
                list.Add("不良反应:");
                list.Add((string)dr["不良反应"]);
            }

            for (int i = 0; i < list.Count; i++)
            {
                textBox显示窗口.Text += list[i] + "\r\n" + "\r\n";



            }

            textBox疾病名称.Text = list[3].ToString();
            textBox英文名称.Text = list[5].ToString();





        }
--------------------编程问答--------------------
不清楚LZ说的意思

不读是没数据。。还是报错了。。

睡觉去了。。困了。。 --------------------编程问答--------------------
帮顶 --------------------编程问答-------------------- 可能是没有数据

在DataReader对象的Read方法读取数据之前,应该使用DataReader对象的HasRows方法判断一下是否有数据


if(dataReader.HasRows)
{
   while(dataReader.Read())
   {
   }
}
--------------------编程问答-------------------- 个人估计这句也有问题
this.lstDrugName.DisplayMember = "中文名称";
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,