C# access数据库显示到listview,选中一项显示到label
private void listView1_SelectedIndexChanged(object sender, EventArgs e)//----------------------------------listView1选中一项显示到lable中---------------------------------
{
try
{
if (listView1.SelectedItems.Count > 0)
{
if (dbconn.State != ConnectionState.Open)
{
dbconn.Open();
}
this.label4.Text = "";
string strSql = "select * from table1 where ID='%" + listView1.SelectedItems[0].Tag.ToString() + "%'";
OleDbCommand oledbCom = new OleDbCommand(strSql, dbconn);
OleDbDataReader rd = oledbCom.ExecuteReader();
if (rd.Read()) //如果oledbDR.Read()读取内容不为空,则继续。注意下,每执行一条oledbDR.Read(),oledbDR会自动转到下一条信息
{
ID = Convert.ToInt32(rd["ID"]);
this.label4.Text = rd["question"].ToString();
this.label5.Text = rd["answer"].ToString();
}
rd.Close(); //必须关闭OleDbDataReader
dbconn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
如果这样写就会提示未将对象引用设置到对象的实例,请问是什么情况?小弟第一次写access数据库的东西,对这个不是很了解,望各位大大指教 C# access listview label --------------------编程问答-------------------- listView1.SelectedItems[0].Tag.ToString()
这个没有取到值.tag应该是null --------------------编程问答--------------------
那应该怎么修正呢? --------------------编程问答-------------------- listView1.SelectedItems[0]是一个对象,你绑定的是一个数据表,所以应该是一个datarow,你可以这样用
((DataRow)listView1.SelectedItems[0])["question"]。ToString();//其中question为字段名,楼主可以试一试 --------------------编程问答-------------------- 当然,用之前可以先尝试判断一下Type,看是不是DataRow --------------------编程问答-------------------- 學會看異常的提示,提示寫的很清楚,調用方法前,檢查是否為NULL
你可以在sql語句之前先判斷Listview.selecteditems[0].tag是否為空,然後再考慮拼接字符串
你這個寫法其實不妥... --------------------编程问答--------------------
不好意思,请问具体在哪里改,我把
listView1.SelectedItems[0].Tag.ToString()
这一句替换掉不行,对于这个DataRow我不是很熟练,见谅 --------------------编程问答--------------------
C#新手一枚,代码不是很规范,这个判断怎么写?
补充:.NET技术 , C#