据我所知。 来自 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");
}
}
}
}
}
答案 0 :(得分:0)
检查连接是否未打开,然后只打开连接并执行删除操作。
我建议使用重新绑定数据而不是直观删除。首先执行删除操作并重新绑定datagrid。