📄 updates.vb
字号:
Option Explicit On
Option Strict On
Imports System.Data
Imports System.Data.SqlClient
Public Class Updates
'Note: Connection string packet size is set to 16384.
Public intUpdateParamCount As Integer
Public intUpdateTextLength As Integer
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
daOrders.Fill(dsOrders.Orders)
If Not cnNwind.State = ConnectionState.Closed Then
cnNwind.Close()
End If
intUpdateParamCount = Me.daOrders.UpdateCommand.Parameters.Count
intUpdateTextLength = Len(Me.daOrders.UpdateCommand.CommandText)
End Sub
Private Sub btnUpdateDS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdateDS.Click
Me.Cursor = Cursors.WaitCursor
txtTime.Text = ""
Dim intRow As Integer = 0
Dim intRows As Integer = 0
Dim datOrder As DateTime
Dim datNewDate As DateTime
With OrdersDataGridView
intRows = .Rows.Count
.EditMode = DataGridViewEditMode.EditOnEnter
For intRow = 0 To intRows - 2
.CurrentCell = .Rows(intRow).Cells(3)
datOrder = CType(.CurrentCell.Value, DateTime)
'Add or subtract 1 day from the OrderDate
If chkDecrDate.Checked Then
datNewDate = datOrder.AddDays(-1)
Else
datNewDate = datOrder.AddDays(1)
End If
.CurrentCell.Value = datNewDate
.EndEdit(DataGridViewDataErrorContexts.Commit)
Next
.CurrentCell = .Rows(0).Cells(3)
End With
If dsOrders.HasChanges Then
btnUpdateOrders.Enabled = True
End If
Me.Cursor = Cursors.Default
End Sub
Private Sub btnUpdateOrders_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdateOrders.Click
Me.Cursor = Cursors.WaitCursor
Try
'The following SqlDataAdapter properties are set in design mode:
'daOrders.AcceptChangesDuringFill = True
'daOrders.UpdateBatchSize = 0
'daOrders.UpdateCommand.UpdatedRowSource = UpdateRowSource.None
'daOrders.InsertCommand.UpdatedRowSource = UpdateRowSource.None
'daOrders.DeleteCommand.UpdatedRowSource = UpdateRowSource.None
'SqlConnection properties set in design mode:
'FireInfoMessageEventsOnUserError = True
AddHandler cnNwind.InfoMessage, _
New SqlInfoMessageEventHandler(AddressOf OnInfoMessage)
daOrders.UpdateBatchSize = CInt(nudBatchSize.Value)
Dim lngTicks As Long
With dsOrders
If .HasChanges Then
Dim dsChanges As DataSet = .GetChanges
dsChanges.WriteXml(Application.StartupPath + "\Diffgram.xml", XmlWriteMode.DiffGram)
lngTicks = Now.Ticks
If Not cnNwind.State = ConnectionState.Open Then
cnNwind.Open()
End If
'daOrders.Update(dsOrders)
daOrders.Update(dsChanges)
dsOrders.AcceptChanges()
txtTime.Text = Format((Now.Ticks - lngTicks) / 10000000, "#0.000")
dsChanges.Dispose()
End If
End With
btnUpdateOrders.Enabled = False
btnUpdateDS.Focus()
Catch excSql As SqlException
Me.Cursor = Cursors.Default
MsgBox(excSql.Message + excSql.StackTrace, , "Batch Update SqlClient Exception")
Catch excSys As SystemException
Me.Cursor = Cursors.Default
MsgBox(excSys.Message + excSys.StackTrace, , "Batch Update System Exception")
Finally
If Not cnNwind.State = ConnectionState.Closed Then
cnNwind.Close()
End If
Me.Cursor = Cursors.Default
End Try
End Sub
Private Shared Sub OnInfoMessage(ByVal sender As Object, _
ByVal args As SqlInfoMessageEventArgs)
Dim errSql As SqlError
For Each errSql In args.Errors
'For testing
Stop
Next
End Sub
Private Sub btnRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRefresh.Click
If chkNetwork.Checked Then
'Change ConnectionString to a remote instance with Northwind installed
cnNwind.ConnectionString = "Server=OAKLEAF-W2K3;Integrated Security=True;Database=NorthwindCS;packet size=16384"
Else
cnNwind.ConnectionString = "Server=localhost;Integrated Security=True;Database=Northwind;packet size=16384"
End If
dsOrders.Clear()
daOrders.Fill(dsOrders.Orders)
txtTime.Text = ""
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -