2014-02-17 67 views
0

我在使用datagridview更新數據庫表時遇到問題,我已經閱讀了關於該問題的一些線索,而且在我的情況下似乎沒有任何工作。這是我填充datagridview時使用的代碼。使用vb.net 2010更新SQL服務器表datagridview

Public Sub filldatagridserver(ByRef SQL As String, ByRef dg As DataGridView) 
    Dim myDataset As DataSet = New DataSet 
    myAdptr.SelectCommand = New SqlCommand(SQL, cnSQL) 
    myAdptr.Fill(myDataset) 

    dg.DataSource = myDataset.Tables(0) 
    dg.AutoResizeColumns() 

    myAdptr.Dispose() 
    myDataset.Dispose() 
    cnSQL.Close() 

    End Sub 

然後我打電話與FF代碼這個子過程:

Call filldatagridserver("SELECT * FROM tblQuarterCollection", dgQuarter) 

我已經使用myAdptr.update但我不斷收到錯誤有關表映射等。我也試圖引用了部署和在子程序中關閉,但它仍然不起作用。

有無論如何正確填充datagridview和更新對數據庫所做的更改。我認爲我在這裏的最後一招是根據datagridview中的當前值循環每條記錄更新數據。請幫忙。

+1

看到調用更新的代碼將很有用,但是如果您銷燬適配器,那麼您無法使用該更新進行更新 – Steve

+0

@steve this是我在做更新時使用的。 myAdptr.Update(myDataset,「tblPayMTC」) – Hideki

+0

然後在填充數據集myAdptr.Fill(myDataset,「tblPayMTC」)時添加表的名稱。獲得自動更新工作的另一個重點是使SELECT查詢返回主鍵。你有沒有爲你的表定義一個主鍵? – Steve

回答

0

如果你調用Update傳球也表的名稱,那麼你需要添加名字時填寫最初的數據集

myAdptr.SelectCommand = New SqlCommand(SQL, cnSQL) 
myAdptr.Fill(myDataset, "tblPayMTC") 

另一個重要的一點,以獲得自動更新工作是有一個主由SELECT查詢返回的鍵,否則你需要爲SqlDataAdapter實例的UpdateCommand,InsertCommand和DeleteCommand編寫自己的命令。

primary key是表tblQuarterCollection中的一列,用於唯一標識您的記錄(通常是Identity列設置爲true的ID列),但它也可以是一組將列表作爲主鍵使用的列。
雖然它不是強制性的與此屬性集中的一列,這是非常可取有一個

+0

感謝您的回覆,你有一個示例代碼如何手動寫入適配器的更新/插入/刪除命令? – Hideki

+0

不,它取決於你的表INSERT INTO表(字段列表)對於UPDATE,VALUES(參數列表)的VALUES(參數列表)相同,但是如果你在表中定義了一個主鍵(它應該是),它不應該是必需的 – Steve

+0

hi ,對不起,我出去了一段時間。我設置了一個主鍵,但仍然出現錯誤。 「在使用修改的行傳遞DataRow集合時,Update需要有效的UpdateCommand。」 如果我使用SQL更新命令我應該設置什麼參數? datagridview中每個單元格的值?它會自動增加每行? – Hideki

0

試試這個:

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click 
Dim addcmd as new sqlcommand("INSERT INTO TableName VALUES(@col1,@col2)",YourConnectionString) 
addcmd.parameters.addwithvalue("@col1",txtCol1.text) 
addcmd.parameters.addwithvalue("@col2",txtCol2.text) 
addcmd.executenonQuery 


End Sub 
+0

hi @Unknownymous我不能相當找出你的代碼放在哪裏 – Hideki

0

最後,我設法讓我的代碼工作。我檢查了我的數據庫並重置了主鍵,現在它工作得很好