我試圖通過使用一個更新按鈕并手動更改 datagridview 中的值然后點擊更新來在 Vb.net 中添加、洗掉和編輯功能。但是,我收到一條錯誤訊息,指出“System.InvalidOperationException: 'Update requires a valid UpdateCommand when passed DataRow collection with modified”
有任何想法嗎?錯誤出現在 da.Update(changes) 旁邊
同樣在我的代碼中未顯示的上述代碼中,我在私有 form1_load 子中有 load_data() 。
這是代碼:
Dim da As New SqlDataAdapter
Dim dt As New DataSet
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
Dim cmd As New SqlCommandBuilder
Dim changes As New DataSet
changes = dt.GetChanges
If changes IsNot Nothing Then
da.Update(changes)
da.Fill(dt)
DataGridView1.DataSource = dt.Tables(0)
End If
End Sub
Private Sub load_data()
Using connection = New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=vbconnectionfinal;Integrated Security=True")
da = New SqlDataAdapter("Select * From TrueTrack", connection)
dt.Clear()
da.Fill(dt)
DataGridView1.DataSource = dt.Tables(0)
End Using
End Sub
uj5u.com熱心網友回復:
您正在創建 aSqlCommandBuilder但未將其與 a 關聯SqlDataAdapter,那么有什么意義呢?命令構建器的全部目的是在您呼叫Update資料配接器時自動生成操作命令。創建資料配接器時,請立即創建命令構建器并將兩者關聯起來,您可以通過將資料配接器作為引數傳遞給命令構建器的建構式來實作。
uj5u.com熱心網友回復:
以下代碼適用于我。
Dim da As New SqlDataAdapter
Dim dt As New DataSet
Dim connection = New SqlConnection("connection string")
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim cmd As New SqlCommandBuilder(da)
Dim changes As New DataSet
changes = dt.GetChanges
If changes IsNot Nothing Then
da.Update(changes)
DataGridView1.DataSource = dt.Tables(0)
End If
End Sub
Private Sub load_data()
Dim cmd As SqlCommand = New SqlCommand("Select * From TrueTrack", connection)
da = New SqlDataAdapter(cmd)
dt.Clear()
da.Fill(dt)
DataGridView1.DataSource = dt.Tables(0)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
load_data()
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
connection.Close()
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/417549.html
標籤:
