0

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

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

我也知道如何从文本框中获取数据并使用 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 数据库?

4

3 回答 3

2

tsh我从var 是 DataSet 或 DataTable的假设开始。
如果这是真的,那么可以使用相同的 SqlCommand 创建一个新的 SqlDataAdapter 来完成更新,但是您可以使用 Update 方法传递从网格的 DataSource 中提取的 DataTable 或 DataSet,而不是使用 Fill 方法。在执行 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 属性

一些参考资料:
从 DataGridView 更新数据库
如何在 Visual C# .NET
DbDataAdapter.Update 方法中使用 SqlDataAdapter 对象更新 SQL Server 数据库

于 2012-04-13T13:01:07.017 回答
1

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

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

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

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

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

myAdapter.Update(ds);

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

于 2012-04-13T13:13:18.653 回答
0

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

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 UPDATE 中使用这些值

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

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

于 2012-04-13T13:00:16.020 回答