2012-04-13 176 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