2012-04-13 101 views
0

我提前道歉,因为我知道这对大多数人来说是一个非常基本的问题,但我真的很努力地找到我需要的相关信息,并想知道是否有人可以发送我在正确的方向。从Datagrid获取数据返回到SQL Server数据库

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

另外我知道如何从说文本框中获取数据并使用TSQL将其发回数据库,但datagrid暗示了我。我知道它与数据绑定有关,但我没有取得太多进展。

这里是我如何在目前填充DataGrid:

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; 

我搜索各种资源,但没有发现任何可怕usedful。任何人都可以向我指出一个好的(初学者)文章的方向,关于如何获取datagrid中的用户输入数据,并将它们发回sqlserver数据库?

回答

1

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

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负担相同的SqlCommand,DELETE和UPDATE的SqlCommand需要更新您的数据库。

但应该注意的是,SqlDataAdapter在内部必须执行SelectCommand以便能够构造INSERT,UPDATE和DELETE SQL命令。因此,这可能会阻碍性能。为了达到最佳性能,指定INSERT,DELETE和UPDATE命令明确地将其分配到的SqlDataAdapter

一些引用的InsertCommand,的DeleteCommand和更新命令属性您:
Update database from DataGridView
How To Update a SQL Server Database by Using the SqlDataAdapter Object in Visual C# .NET
DbDataAdapter.Update Method

0

下面是关于如何从一个DataGrid做更新的一个非常基本的例子

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,你应该使用标签在你的问题说你所使用的语言

+0

原来的职位有[C#]标签 - 但我还是谢谢你 – PJW 2012-04-13 20:59:57

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); 

一个不错的文章在这里:Add, Edit, and Delete in DataGridView