我提前道歉,因为我知道这对大多数人来说是一个非常基本的问题,但我真的很难找到我需要的相关信息,并想知道是否有人可以向我发送正确的方向。
我有一个winforms应用程序和一个SQLserver数据库。我知道如何用我的数据库中的数据来打包各种控件(包括datagrid)。但是,我正在努力的是如何让用户操纵datagrid中的数据,返回到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数据库,从哪里来?
答案 0 :(得分:2)
我从假设tsh
var是DataSet或DataTable开始
如果这是真的,则可以使用创建新的SqlDataAdapter来完成更新
相同的SqlCommand但是,您使用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);
通过这种方式,您可以向SqlDataAdapter传递构建更新数据库所需的相应INSERT,DELETE和UPDATE SqlCommand的负担。
但是应该注意,在内部,SqlDataAdapter必须执行SelectCommand才能构造INSERT,UPDATE和DELETE SQL命令。结果,这可能会妨碍性能。要获得最佳性能,请指定INSERT,DELETE和UPDATE命令,将它们显式分配给SqlDataAdapter的InsertCommand,DeleteCommand和UpdateCommand属性
为您提供一些参考:
Update database from DataGridView
How To Update a SQL Server Database by Using the SqlDataAdapter Object in Visual C# .NET
DbDataAdapter.Update Method
答案 1 :(得分:1)
您应该在适配器中实现insert / update / delete命令。
myAdapter.InsertCommand = new SqlCommand("INSERT INTO yourTable VALUES(@param1, @param2)", conn);
myAdapter.InsertCommand.Parameters.Add("@param1",...);
对Update和Delete命令执行相同操作。然后,使用适配器填充DataSet,并将其作为数据网格的数据源。
DataSet ds = new DataSet();
myAdapter.Fill(ds);
dataGrid1.DataSource = ds;
如果要将更改发送到数据库,可以调用myAdapter.Update方法。
myAdapter.Update(ds);
这里有一篇很好的文章:Add, Edit, and Delete in DataGridView
答案 2 :(得分: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,您应该在问题中使用标签来说明您正在使用的语言