在c#中使用access数据库中的数据网格视图删除一行

Posted

技术标签:

【中文标题】在c#中使用access数据库中的数据网格视图删除一行【英文标题】:Deleting a row using data grid view from access database in c# 【发布时间】:2021-10-15 19:48:31 【问题描述】:

我的代码如下:

            foreach (DataGridViewRow row in dtGrdViewOgr.SelectedRows)
        
            dtGrdViewOgr.Rows.RemoveAt(row.Index);
        

当从数据网格视图中删除一行时,该代码运行良好,但它不会删除其真正的数据库行。为此,我必须保存已编辑的数据网格视图或编写针对数据库的命令。我不知道在这里使用什么,你能帮我吗?我正在使用 Data.OleDB

【问题讨论】:

【参考方案1】:

试试这样的:

对于 mssql 标准安全连接字符串:

constr = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";

    OleDbConnection con = new OleDbConnection(constr);  
    OleDbCommand delcmd = new OleDbCommand();
    delcmd.CommandText = "DELETE FROM tb1 WHERE ID=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
    con.Open();
    delcmd.Connection = con;
    delcmd.ExecuteNonQuery();
    con.Close();
    dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);

【讨论】:

嗯,我收到“System.NullReferenceException:'对象引用未设置为对象的实例。'”错误:oDBCom.CommandText = "DELETE FROM tblOgrBil WHERE ID=" + dtGrdViewOgr.CurrentRow.Cells[0].Value.ToString(); 尝试 dataGridView1.SelectedRows[i].Cells[0].Value.ToString() 代替 dataGridView1.SelectedRows[0].Cells[0].Value.ToString() --> 如果你的数据id 是行的第一个单元格。 我实际上在想出自己的解决方案之前尝试过,遗憾的是它给出了完全相同的错误。另外我应该补充一下,你为什么要添加最后一个+ "" 部分? 是的,这部分应该删除。您为此使用哪个事件? DatagridviewChangeIndex,点击等? 我使用 button.click

以上是关于在c#中使用access数据库中的数据网格视图删除一行的主要内容,如果未能解决你的问题,请参考以下文章

从datagridview C#中删除数据库中的一行

c# dataGridView对access数据库的增加 修改 删除

如何忽略单元格输入中的制表键而不是制表符?数据网格视图 C#

以编程方式删除数据网格视图中的行标题

从对多个数据网格的更改更新本地存储的数据库(Visual Studio C#,使用 OLEDB 的 Access 数据库)

在 C# 中刷新数据视图网格