1

我有一个使用代码添加表数据的datagridview,我想删除一行数据并让它在数据库表中更新。我该怎么做呢?有小费吗?

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;


namespace project
{
    public partial class frmTestPrint : Form
    {
        //with code
        SqlConnection cn = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=F:etc");
        SqlDataAdapter da;
        DataTable dt = new DataTable();


        public frmTestPrint()
        {
            InitializeComponent();
        }

        //with code
        private void BindDataGridView2()
        {
            string command = "select * from booking";
            da = new SqlDataAdapter(command,cn);
            da.Fill(dt);
            dataGridView2.DataSource = dt;


        }

        private void frmTestPrint_Load(object sender, EventArgs e)
        {

            //with code
            BindDataGridView2();
        }


        private void btnDelete_Click(object sender, EventArgs e)
        {


        }
    }
}

我尝试了许多不同的方法并且被卡住了,我真的需要一些帮助来指导我完成这个,所以如果有人可以提供帮助,请做。

4

2 回答 2

1

经过进一步审查,您似乎在 StackOverflow 上询问了很多关于 WinForms 中基本操作的问题。我对您的建议是寻找材料来学习如何使用您选择的任何语言和框架进行编程,并尝试了解您正在编写的代码在做什么。

当您要求每个人为您编写代码时,您只是在使问题复杂化——您不完全了解您的代码在做什么,并且很难修复错误。在我过去,我也这样做过,并且花了 10 倍的时间试图让其他人的代码为我工作,而不是学习为自己编写代码。

我知道您最初的想法是,您最终会通过要求其他人编写您的代码来解决这个问题,但根据我的经验,情况并非如此,您并没有以这种方式学习任何东西。

于 2013-04-09T19:30:20.917 回答
0

尝试这个,

1st,你需要知道你需要删除哪一行(ID)。所以试试:

string myID = dataGridView2.CurrentRow.Cells["ID"].Value

接下来,您需要更新您的数据库。现在你可以使用字符串命令来做到这一点,但我不会这样做,我会使用存储过程。所以在你的sql中:

CREATE PROCEDURE myDeleteQuery
@paramID
AS
DELETE * FROM booking WHERE booking.ID = @param

非常简单的删除查询,我只是假设不知道您的表结构。

你想要做的最后一件事就是一起修复它,所以试试这个。

using (SqlConnection AutoConn = new SqlConnection(cn))
{
    AutoConn.Open();
    using (SqlCommand InfoCommand = new SqlCommand())
    {
        using (SqlDataAdapter infoAdapter = new SqlDataAdapter(InfoCommand))
        {
            InfoCommand.Connection = AutoConn;
            InfoCommand.CommandType = CommandType.StoredProcedure;
            InfoCommand.CommandText = "myDeleteQuery";
            InfoCommand.Parameters.AddWithValue("@paramID", myID);
            InfoCommand.CommandTimeout = 180;
            InfoCommand.ExecuteScalar()
            AutoConn.Close();
        }
    }
}

这将更新您的表格。现在您需要做的就是显示更改,所以只需回忆一下您的

BindDataGridView2();

和你的排序。

希望这可以帮助您和我正确阅读您的问题

于 2013-04-30T11:43:56.467 回答