C#从datagrid和数据库中删除选定的行

时间:2014-01-27 11:24:06

标签: c# sql datagridview

如果这是一个平凡的问题或缺乏信息,请提前道歉,我是软件开发和堆栈溢出社区的新手。

为澄清目的:

  • 我正在使用SQL Server 2012中的AdventureWorks示例数据库,我创建了一个名为Users的表。
  • 我正在使用C#

我想要实现的目标和问题概述:

用户应该能够在datagridview中选择一行,并选择删除按钮以从数据库中删除所选用户。运行我的代码时,行将从datagridview中删除,但不会删除数据库,因为刷新datagridview时记录会返回,我不太确定我哪里出错了..

    private void btnDelete_Click(object sender, EventArgs e)
    {
        delete_record();

        SqlConnection conn = new SqlConnection();
        SqlCommand delcmd = new SqlCommand();
        conn.ConnectionString = "server=localhost;Trusted_connection=yes;database=AdventureWorks2012";
        conn.Open();

        SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Users", conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        dbgrid1.DataSource = dt;
        conn.Close();
    }


    private void delete_record()
    {
        SqlConnection conn = new SqlConnection();
        SqlCommand delcmd = new SqlCommand();
        conn.ConnectionString = "server=localhost;Trusted_connection=yes;database=AdventureWorks2012";
        if (dbgrid1.Rows.Count > 1 && dbgrid1.SelectedRows[0].Index != dbgrid1.Rows.Count - 1)
        {
            delcmd.CommandText = "DELETE FROM Users WHERE ID=" + dbgrid1.SelectedRows[0].Cells[0].Value.ToString() + "";
            conn.Open();
            delcmd.Connection = conn;
            delcmd.ExecuteNonQuery();
            conn.Close();
            dbgrid1.Rows.RemoveAt(dbgrid1.SelectedRows[0].Index);
            MessageBox.Show("deleted");
        }
    }

1 个答案:

答案 0 :(得分:0)

在您的代码中

dbgrid1.Rows.RemoveAt(dbgrid1.SelectedRows[0].Index);

上面的代码从网格中删除数据,并且工作正常

但是下面的代码不能正常工作(我的SQL查询删除行)

delcmd.CommandText = "DELETE FROM Users WHERE ID=" + dbgrid1.SelectedRows[0].Cells[0].Value.ToString() + "";

表示您正在使用的ID dbgrid1.SelectedRows[0].Cells[0].Value.ToString()错误。

在观察窗口中取出它,找出那里有什么价值。