VB.Net/Database ADO.net/Sql Data Adapter

Материал из VB Эксперт
Перейти к: навигация, поиск

Set SqlDataAdapter Update Batch Size

<source lang="vbnet"> Imports System Imports System.Data Imports System.Windows.Forms Imports System.Data.SqlClient Imports System.IO public class MainClass

  Shared Sub Main()
     Dim form1 As Form = New Form1
     Application.Run(form1)
  End Sub

End Class Public Class Form1

  Inherits System.Windows.Forms.Form
  Private cb As SqlCommandBuilder
  Private da As SqlDataAdapter
  1. Region " Windows Form Designer generated code "
  Public Sub New()
     MyBase.New()
     "This call is required by the Windows Form Designer.
     InitializeComponent()
     "Add any initialization after the InitializeComponent() call
  End Sub
  "Form overrides dispose to clean up the component list.
  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
     If disposing Then
        If Not (components Is Nothing) Then
           components.Dispose()
        End If
     End If
     MyBase.Dispose(disposing)
  End Sub
  "Required by the Windows Form Designer
  Private components As System.ruponentModel.IContainer
  "NOTE: The following procedure is required by the Windows Form Designer
  "It can be modified using the Windows Form Designer.  
  "Do not modify it using the code editor.
  Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
  Friend WithEvents buttonUpdate As System.Windows.Forms.Button
  Friend WithEvents DataSet1 As System.Data.DataSet
  Friend WithEvents SqlCommand1 As System.Data.SqlClient.SqlCommand
  <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
     Me.DataGrid1 = New System.Windows.Forms.DataGrid
     Me.buttonUpdate = New System.Windows.Forms.Button
     Me.DataSet1 = New System.Data.DataSet
     Me.SqlCommand1 = New System.Data.SqlClient.SqlCommand
     CType(Me.DataGrid1, System.ruponentModel.ISupportInitialize).BeginInit()
     CType(Me.DataSet1, System.ruponentModel.ISupportInitialize).BeginInit()
     Me.SuspendLayout()
     "
     "DataGrid1
     "
     Me.DataGrid1.DataMember = ""
     Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
     Me.DataGrid1.Location = New System.Drawing.Point(8, 8)
     Me.DataGrid1.Name = "DataGrid1"
     Me.DataGrid1.Size = New System.Drawing.Size(400, 192)
     Me.DataGrid1.TabIndex = 0
     "
     "buttonUpdate
     "
     Me.buttonUpdate.Location = New System.Drawing.Point(171, 208)
     Me.buttonUpdate.Name = "buttonUpdate"
     Me.buttonUpdate.TabIndex = 1
     Me.buttonUpdate.Text = "Update"
     "
     "DataSet1
     "
     Me.DataSet1.DataSetName = "NewDataSet"
     Me.DataSet1.Locale = New System.Globalization.CultureInfo("en-GB")
     "
     "Form1
     "
     Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
     Me.ClientSize = New System.Drawing.Size(416, 245)
     Me.Controls.Add(Me.buttonUpdate)
     Me.Controls.Add(Me.DataGrid1)
     Me.Name = "Form1"
     Me.Text = "Form1"
     CType(Me.DataGrid1, System.ruponentModel.ISupportInitialize).EndInit()
     CType(Me.DataSet1, System.ruponentModel.ISupportInitialize).EndInit()
     Me.ResumeLayout(False)
  End Sub
  1. End Region
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     "Create Connection object
     Dim thisConnection As New SqlConnection("server=(local)\SQLEXPRESS;" & _
         "integrated security=sspi;database=MyDatabase")
     " Sql Query
     Dim sql As String = "SELECT * FROM Employee"
     " Create a Command
     SqlCommand1 = New SqlCommand(sql, thisConnection)
     " Create SqlDataAdapter
     da = New SqlDataAdapter
     da.SelectCommand = SqlCommand1
     " Create SqlCommandBuilder object
     cb = New SqlCommandBuilder(da)
     " Fill Dataset
     da.Fill(DataSet1, "Employee")
     " Bind the data to the grid at runtime
     DataGrid1.SetDataBinding(DataSet1, "Employee")
  End Sub
  Private Sub buttonUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonUpdate.Click
     da.UpdateBatchSize = 10
     da.Update(DataSet1, "Employee")
  End Sub

End Class

      </source>


SqlDataAdapter Event: updated and updating

<source lang="vbnet"> Imports System Imports System.Data Imports System.Data.SqlClient

public class MainClass

  Shared Sub Main()
     Dim thisConnection As New SqlConnection("server=(local)\SQLEXPRESS;" & _
         "integrated security=sspi;database=MyDatabase")
     Dim sql As String = "SELECT FirstName, LastName From Employee"
     Try
        thisConnection.Open()
        Dim thisAdapter As New SqlDataAdapter(sql, thisConnection)
        Dim cb As New SqlCommandBuilder(thisAdapter)
        Dim ds As New DataSet
        thisAdapter.Fill(ds, 0, 1, "Customers")
        AddHandler thisAdapter.RowUpdating, AddressOf OnRowUpdating
        AddHandler thisAdapter.RowUpdated, AddressOf OnRowUpdated
        Dim dt As DataTable = ds.Tables("Customers")
        dt.Rows(0)(1) = "The Volcano Corporation"
        thisAdapter.Update(ds, "Customers")
        RemoveHandler thisAdapter.RowUpdating, AddressOf OnRowUpdating
        RemoveHandler thisAdapter.RowUpdated, AddressOf OnRowUpdated
     Catch ex As SqlException
        Console.WriteLine(ex.Message)
     Finally
        " Close Connection
        thisConnection.Close()
     End Try
  End Sub
  " Handler for OnRowUpdating
  Shared Private Sub OnRowUpdating(ByVal sender As Object, ByVal e As SqlRowUpdatingEventArgs)
     Console.WriteLine("OnRowUpdating Event")
     If Not e.Status = UpdateStatus.Continue Then
        Console.WriteLine("RowStatus = " & e.Status.ToString())
     End If
  End Sub
  " Handler for OnRowUpdated
  Shared Private Sub OnRowUpdated(ByVal sender As Object, ByVal e As SqlRowUpdatedEventArgs)
     Console.WriteLine("OnRowUpdated Event")
     Console.WriteLine("Records Affected = " & e.RecordsAffected.ToString())
  End Sub

End Class

      </source>