C# listview 数据库删除功能提示“未将对象引用设置到对象的实例”
如题,直接上代码:
private void buttonDel_Click(object sender, EventArgs e)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\\毕业设计\\ASSM.accdb";
OleDbConnection connection = new OleDbConnection(connectionString);
DialogResult dr = MessageBox.Show("确定要删除所选记录? ", "Photonsoft", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dr == DialogResult.OK)
{
try
{
connection.Open();//打开连接。
string id = ""; //此处的id是我的记录在数据库中的ID (唯一识别号) 。
foreach (ListViewItem item in listView1.SelectedItems) //遍历已选中的记录。
{
for ( int i = 0; i < listView1.SelectedItems.Count; i++) // 在以选中的记录中遍历获取每个记录的id并删除之。
{
if (this.listView1.SelectedItems[i].Selected) //如果第i行被选中的话,取得该选中行的索引号
{
DataSet ds = new DataSet();
id = ds.Tables["ASSM"].Rows[this.listView1.SelectedIndices[i]][0].ToString(); //获取选中的第i条记录在数据库中的id号。
string sql = string.Format("delete from notes where id='{0}'", id); //删除语句。
//string sql = "delete * from ASSM where id="ds.Tables["ASSM"].Rows[this.listView1.SelectedIndices[i]][0].ToString()"";
OleDbCommand cmd = new OleDbCommand(sql, connection);
cmd.ExecuteNonQuery(); //执行删除。
cmd.Dispose();
}
}
}
listView1.Refresh(); //删除结束后刷新listView。
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
return ;
}
connection.Close();
}
我是参考http://blog.csdn.net/xingqingxiang/article/details/7086531这个博文做的,可是总是提示“未将对象引用设置到对象的实例”我不知道怎么办了,研究了好几天了,真心希望大家可以帮帮我。 数据库 C# listview 未将对象引用设置到对象的实例
[解决办法]
ds.Tables["ASSM"]是否有值?
this.listView1.SelectedIndices[i]][0].ToString()这个的值是多少,单步调试看下就知道是那个出问题了
[解决办法]
DataSet ds = new DataSet();
id = ds.Tables["ASSM"].Rows[this.listView1.SelectedIndices[i]][0].ToString(); //获取选中的第i条记录在数据库中的id号。
这个ds是刚建的,你都没给赋值,那里头的table肯定是空的啊。。。而且你连查询数据库语句都没有,怎么查看数据库记录啊??
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand.CommandText = sql查询语句;
da.Fill(ds);