在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#