C# 如何从datagridview和数据库中删除数据
这就是我所能做到的。 将删除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
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这似乎是你对编码的新手,毫无疑问,请分享你与网格相关的全部代码,我会让它适合你。