C# 如何从datagridview和数据库中删除数据

C# 如何从datagridview和数据库中删除数据,c#,sql-server,database,datagridview,C#,Sql Server,Database,Datagridview,这就是我所能做到的。 将删除datagridview中的数据,但不会删除实际数据库中的数据。 我有一个设备表,其中名称列也被指定为主键。 有人能帮我解决数据库方面的问题吗 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Syst

这就是我所能做到的。 将删除datagridview中的数据,但不会删除实际数据库中的数据。 我有一个设备表,其中名称列也被指定为主键。 有人能帮我解决数据库方面的问题吗

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Windows.Forms;
      using System.Data.SqlClient;
      using System.Web.UI.WebControls;
      namespace Fitness_club
   {
        public partial class editequipment : Form
   {
    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Gym.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
    SqlDataAdapter sda;
    DataSet ds;
    DataTable dt;
    SqlCommandBuilder scb;


    public editequipment()
    {
        InitializeComponent();
    }

    public editequipment(string str)
    {
        InitializeComponent();
        groupBox1.Text = "View All";
        bindingNavigator1.Visible = false;
        dataGridView1.ReadOnly = true;
    }

    private void editequipment_Load(object sender, EventArgs e)
    {
        con = new SqlConnection();
        con.ConnectionString = (@"Data             Source=.\SQLEXPRESS;AttachDbFilename=D:\Gym.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
        con.Open();
        sda = new SqlDataAdapter("select * from equipment", con);
        ds = new DataSet();
        sda.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0];

    }



    private void button1_Click_1(object sender, EventArgs e)
    {
        try
        {
            scb = new SqlCommandBuilder(sda);
            sda.Update(ds);
            MessageBox.Show("Updated Sucessfully");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error\n" + ex.Message, "Error",   
            MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    private void button2_Click_1(object sender, EventArgs e)
    {



        con = new SqlConnection();

        con.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Gym.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
        con.Open();
        foreach (DataGridViewCell onecell in dataGridView1.SelectedCells)
        {
            if (onecell.Selected)
            {
                dataGridView1.Rows.RemoveAt(onecell.RowIndex);
                try
                {

                    con.Open();
                    SqlCommand cmd = new SqlCommand("delete from equipment where name='" + Name.ToString() + "'", con);
                    cmd.ExecuteNonQuery();
                    con.Close();
                    dataGridView1.Update();
                    dataGridView1.Refresh();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
                MessageBox.Show("Deleted sucessfully");
            }
        }
    }
}
       }

检查连接是否未打开,然后仅打开连接并执行删除操作


我建议使用重新绑定数据,而不是直观地删除数据。首先执行删除操作并重新绑定datagrid

你调试代码了吗?你注意到了什么?检查什么是查询生成,然后在sql中运行select以检查是否得到任何删除结果是的,我已尝试调试它所说的代码-*System.invalidOperationException连接未在System.Data.ProviderBase.DbConnectionInternal.OpenConnection关闭*尽管它抛出该错误,但数据已从数据库中删除datagridview,但不是来自数据库。我尝试使用“dataGridView1.Update();”重新绑定和dataGridview1.Refresh();'但那没用。我想问题出在sql命令查询的某个地方,有人能帮我解决这个问题吗?@VickyGill这似乎是你对编码的新手,毫无疑问,请分享你与网格相关的全部代码,我会让它适合你。