【问题标题】:Update the database when a field is deleted in datagridview?在datagridview中删除字段时更新数据库?
【发布时间】:2013-04-01 09:01:37
【问题描述】:

我有一个使用代码添加表数据的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)
        {


        }
    }
}

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

【问题讨论】:

  • @kadumel 我已经尝试了链接,以及许多其他链接,它没有帮助,数据只是没有从数据库中删除!
  • 我不想让您气馁,但您似乎正在使用直接 SQL 语句,如果您想使用它就可以了。如果您要从数据库中删除数据,那么您需要在该记录上运行 SQL DELETE 语句,如果您谷歌如何做到这一点,您会找到几个示例。请记住 A:您必须非常小心地从数据库中删除数据,尤其是使用 SQL 语句(您可能会很快搞砸)和 B:对于如何处理 CRUD 函数,还有很多其他选项。如果我是你,我会在 Google 上使用带有 WinForms 的实体框架。
  • 删除DataGridView 中的字段不应触发数据库更新。 DataGridView 只是数据的视图/表示。

标签: c# winforms datagridview


【解决方案1】:

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

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

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

【讨论】:

  • +1。我大体同意这里提出的观点。附带说明一下,如果您只需要 10 倍的时间就可以让其他人的代码工作,那么您很幸运。有时我需要 100 倍才能做到这一点。 :)
  • 我明白你的意思,但我一直在问的问题是关于同样的问题,让这个该死的删除按钮起作用!哈哈。我会接受你的建议并开始寻找其他资源,但我是新手,只想完成我正在为我的朋友制作程序的任务。
  • 我看到了其他问题,例如如何从数据库中查询数据,如何将数据加载到 DataGridView 中等等......这让我相信你没有使用任何其他资源。我听说您想要完成它,但目前很难帮助您。看看这个链接是否给你任何方向codeproject.com/Articles/1155/…
【解决方案2】:

试试这个,

第一,你需要知道你需要删除哪一行(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();

你的排序。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多