1

我有一个组合框,它正在查看我的数据库并向我显示用户的姓名,除此之外,我还想查看 dID,我发现这项任务很难实现。我有两个表,所以我假设我必须重复这个 SQL 语句。请查看此代码!

总而言之,我想要实现的只是从数据库中删除用户!会员个人信息表格table_1和会员支付金额和年份dID信息表格表格2!一个删除命令删除 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();
        }

    }
}
4

2 回答 2

1

如果您有级联删除,那么当您删除用户时,这将导致表 2 中的行也被删除

于 2012-12-21T19:56:04.067 回答
0

好的,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();

这完全不在我的脑海中。你可能需要稍微摆弄一下,但如果我理解你的问题,这通常是你需要做的。按照建议对表进行级联删除也是一个好主意。

于 2012-12-21T20:23:56.460 回答