以前也试过用commandbuilder来进行更新,虽然用起来很方便,但是后来发现实在是不可控,我都不知道它自动生成的命令是啥样的,后来就没用了,还是乖乖自己写SQL语句去更新。另外用commandbuilder请加上这两句:
scb.QuotePrefix = "["
scb.QuoteSuffix = "]"
另外你试试Dim i As Integer = da.Update(dt1.GetChanges)直接用Dim i As Integer = da.Update(dt1),dt里面保存了你做的更改信息,commandbuilder会根据这些自动生成命令。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
conn.Open()
Dim da As SqlDataAdapter = New SqlDataAdapter("select * from bhmb_a", conn)
da.Fill(ds, "tt")
dt1 = ds.Tables(0)
DataGridView1.DataSource = dt1
'conn.Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim da As SqlDataAdapter = New SqlDataAdapter("select * from bhmb_a ", conn)
Dim scb As SqlCommandBuilder = New SqlCommandBuilder(da)
Try
Dim i As Integer = da.Update(dt1.GetChanges)
dt1.AcceptChanges()
If i > 0 Then
MsgBox("更新成功")
End If
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Private Sub text_changed(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim dv As DataView = New DataView
dv.Table = dt1
dv.RowFilter = "dpmc like'%" & TextBox1.Text & "%'"
dt2 = dv.ToTable
DataGridView1.DataSource = dt2
End Sub
Private Sub dataGridView1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown
Dim index As Integer
If e.Button = System.Windows.Forms.MouseButtons.Right Then
DataGridView1.Rows(e.RowIndex).Selected = True
index = e.RowIndex
DataGridView1.CurrentCell = DataGridView1.Rows(e.RowIndex).Cells(0)
ContextMenuStrip1.Show(DataGridView1, e.Location)
ContextMenuStrip1.Show(Cursor.Position)
End If
End Sub
Private Sub 删除行ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 删除行ToolStripMenuItem.Click
For Each r As DataGridViewRow In DataGridView1.SelectedRows
DataGridView1.Rows.Remove(r)
Next
End Sub
Private Sub dataGridView1_DefaultValuesNeeded(ByVal sender As Object,
ByVal e As System.Windows.Forms.DataGridViewRowEventArgs) _
Handles DataGridView1.DefaultValuesNeeded
With e.Row
.Cells("bhrq").Value = "2018-04-10"
.Cells("dpmc").Value = "测试店铺"
.Cells("spdm").Value = "SP123456"
.Cells("ID").Value = "100"
End With
End Sub
Private Sub form_close(sender As Object, e As EventArgs) Handles MyBase.FormClosed
conn.Close()
End Sub