通过组合框从数据库中删除行
本文关键字:数据库 删除行 组合 | 更新日期: 2023-09-27 17:49:26
我有一个组合框,它正在查看我的数据库,并向我显示用户的名称,我还想看看dID除此之外,这个任务我发现很难实现。我有两个表,所以我假设我必须重复这个SQL语句。请查看此代码!
总而言之,我想要实现的只是从数据库中删除用户!成员的个人信息表_1和成员的支付金额和年份表_2的信息!一个delete命令删除table_1 &table_2。
欢迎任何其他方法或想法!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CemiyetAidatSistem
{
public partial class DeleteUser : Form
{
String conStr ="My connection string";
public UyeSil()
{
InitializeComponent();
}
SqlDataAdapter da;
DataSet ds = new DataSet();
private void UserDelete_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT FullName FROM Members";
da = new SqlDataAdapter(cmd);
da.Fill(ds, "Members");
cmbUyeSil.DataSource = ds.Tables["Members"];
cmbUyeSil.DisplayMember = "DistinctID";
cmbUyeSil.ValueMember = "FullName";
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "DELETE FROM Members WHERE ID = '" + cmbUyeSil.SelectedValue + "'";
da = new SqlDataAdapter(cmd);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(" Member with dID '"" + cmbUyeSil.SelectedValue + "'"is deleted");
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
如果您打开了级联删除,那么当您删除用户时,这将导致表2中的行也被删除
好的,belxandre是完全正确的;你不应该删除这些记录。你应该有能力标记他们是非活动的。话虽如此,您可以创建一个SqlCommand来执行删除操作,向其添加必要的参数,然后在DataAdapter上调用它:
SqlCommand delcomm = new SqlCommand();
delcomm.CommandType = CommandType.StoredProcedure; //I'd do it with an sp, up to you
delcomm.CommandText = "sp_delUser";
SqlParameter delParam = new SqlParameter("@dID", SqlDbType.Int);//I'm assuming this is the column you need and the right datatype
delcomm.Parameters.Add(delParam);
da.DeleteCommand = delcomm;
da.AcceptChangesDuringUpdate = false;
da.Update(UserTable);//you'll need to set up a DataTable with the right data structure
UserTable.AcceptChanges();
这是我完全没有想到的;你可能需要稍微摆弄一下,但如果我理解你的问题的话,这是你通常需要做的。按照建议对表进行级联删除也是一个好主意。