⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 updates.vb

📁 wrox出版社的另一套经典的VB2005数据库编程学习书籍,收集了书中源码,郑重推荐,电子书,电子书下载
💻 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 + -