将数据从数据网格获取回 SQL Server 数据库

本文关键字:数据 SQL Server 数据库 网格 数据网 获取 | 更新日期: 2023-09-27 18:31:05

我提前道歉,因为我知道这对你们大多数人来说是一个非常基本的问题,但我真的很难找到我需要的相关信息,并想知道是否有人可以把我送到正确的方向。

我有一个winforms应用程序和一个SQL服务器数据库。 我知道如何用数据库中的数据填充各种控件(包括数据网格)。 但是,我正在努力解决的是如何将用户对数据网格中数据的操作返回到sql服务器数据库。

我也知道如何从文本框中获取数据并使用 TSQL 将其发布回数据库,但数据网格暗示了我。 我知道这与数据绑定有关,但我没有取得太大进展。

以下是我目前填充数据网格的方式:

string sqlText = "SELECT * FROM tblCaseTypes;";
string conStr = cConnectionString.BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(conStr);
SqlCommand sqlCom = new SqlCommand(sqlText, linkToDB);
SqlDataAdapter myAdapter = new SqlDataAdapter(sqlCom);
myAdapter.Fill(tsh);
dataTimesheet.DataSource = tsh;

我已经搜索了各种资源,但没有找到任何非常有用的资源。 谁能指出我一篇好的(初学者)文章的方向,介绍如何将数据网格中的用户输入数据回发到 sqlserver 数据库?

将数据从数据网格获取回 SQL Server 数据库

我从假设tsh变量是数据集或数据表开始。
如果这是真的,那么更新可以创建一个新的 SqlDataAdapter 与相同的 SqlCommand 但是,不使用 Fill 方法,而是使用 Update 方法传递从网格的数据源中提取的数据表或数据集。在执行 Update 方法之前,将 DataAdapter 的属性 SelectCommand 设置为用于检索记录的相同 SqlCommand

DataTable dt = dataTimesheet.DataSource as DataTable;
string sqlText = "SELECT * FROM tblCaseTypes;"; 
string conStr = cConnectionString.BuildConnectionString(); 
SqlConnection linkToDB = new SqlConnection(conStr); 
SqlDataAdapter myAdapter = new SqlDataAdapter(); 
myAdapter.SelectCommand = new SqlCommand(sqlText, linkToDB);
myAdapter.Update(dt); 

通过这种方式,您将构建更新数据库所需的适当 INSERT、DELETE 和 UPDATE SqlCommand 的负担传递给 SqlDataAdapter。

但是应该注意的是,在内部,SqlDataAdapter 必须执行 SelectCommand 才能构造 INSERT、UPDATE 和 DELETE SQL 命令。因此,这可能会妨碍性能。若要获得最佳性能,请指定 INSERT、DELETE 和 UPDATE 命令,将它们显式分配给 SqlDataAdapter 的 InsertCommand、DeleteCommand 和 UpdateCommand 属性

为您提供的一些参考资料:
从数据网格视图
更新数据库如何使用 Visual C# .NET
中的 SqlDataAdapter 对象更新 SQL Server 数据库DbDataAdapter.Update Method

您应该在适配器中实现插入/更新/删除命令。

myAdapter.InsertCommand = new SqlCommand("INSERT INTO yourTable VALUES(@param1, @param2)", conn);
myAdapter.InsertCommand.Parameters.Add("@param1",...);

只需对"更新"和"删除"命令执行相同的操作即可。然后,使用适配器填充数据集,并将其作为数据网格的数据源。

DataSet ds = new DataSet();
myAdapter.Fill(ds);
dataGrid1.DataSource = ds;

当您想要将更改发送到数据库时,只需调用 myAdapter.Update 方法即可。

myAdapter.Update(ds);

这里有一篇不错的文章:在 DataGridView 中添加、编辑和删除

下面是一个关于如何从数据网格进行更新的非常基本的示例

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.updatecommand.aspx

基本上你需要一个

    OnEditCommand="ItemsGrid_Edit"

然后在你的

    Sub ItemsGrid_Update(sender As Object, e As DataGridCommandEventArgs) 

您需要将项强制转换为文本框以获取其值的方法

    Dim qtyText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox)

然后,您可以在 SQL 更新中使用这些值

哦,如果许多用户要使用它,您可能应该使用存储过程或 Linq 而不是直接 SQL。

上面的代码也很 VB.net,你应该在问题中使用标签来说明你正在使用什么语言