VB.Net/Data Structure/Collection

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

Database Connection state change event

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")
      " Sql Query
      Dim sql As String = "SELECT FirstName, LastName From Employee"
      " Create command
      Dim thisCommand As New SqlCommand(sql, thisConnection)
      " Add second handler to StateChange event
      AddHandler thisConnection.StateChange, AddressOf StateIsChanged
      Try
         " Open connection and fire two statechange events
         thisConnection.Open()
         " Create datareader
         Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
         " Display rows in event log
         While thisReader.Read()
            Console.WriteLine(thisReader.GetString(0) _
               + "-" + thisReader.GetString(1))
         End While
      Catch ex As SqlException
         Console.WriteLine(ex.Message)
      Finally
         " Remove second handler from StateChange event
         RemoveHandler thisConnection.StateChange, AddressOf StateIsChanged
         " Close connection and fire one StateChange event
         thisConnection.Close()
      End Try
   End Sub
   Shared Private Sub StateIsChanged(ByVal sender As Object, ByVal e As System.Data.StateChangeEventArgs)
      " Event handler for the StateChange Event
      Console.WriteLine("Entering Second StateChange EventHandler")
      Console.WriteLine("Sender = " + sender.ToString())
      Console.WriteLine("Original State = " + e.OriginalState.ToString())
      Console.WriteLine("Current State = " + e.CurrentState.ToString())
      Console.WriteLine("Exiting Second StateChange EventHandler")
   End Sub
End Class


Do While loop through a Collection

Imports System
Imports System.Collections
Public Class MainClass
    
    Shared Sub Main(ByVal args As String())
        Dim m_Employees As New Collection
        m_Employees.Add(New Employee("A"))
        m_Employees.Add(New Manager("B"))
        m_Employees.Add(New Manager("C"))
        m_Employees.Add(New Employee("D"))
        Dim emp As Employee
        Dim employee_enumerator As IEnumerator
        
        employee_enumerator = m_Employees.GetEnumerator()
        
        Do While (employee_enumerator.MoveNext)
            emp = CType(employee_enumerator.Current, Employee)
            Console.WriteLine( emp.Name )
        Loop
    End Sub
End Class

Public Class Employee
    Public Name As String
    Public Sub New(ByVal new_name As String)
        Name = new_name
    End Sub
    Public Overridable Function IsManager() As Boolean
        Return False
    End Function
End Class
Public Class Customer
    Public Name As String
    Public Sub New(ByVal new_name As String)
        Name = new_name
    End Sub
End Class
Public Class Manager
    Inherits Employee
    Public Sub New(ByVal new_name As String)
        MyBase.new(new_name)
    End Sub
    Public Overrides Function IsManager() As Boolean
        Return True
    End Function
End Class


For Each loop through a Collection

Imports System
Imports System.Collections
Public Class MainClass
    
    Shared Sub Main(ByVal args As String())
        Dim people As New Collection
        people.Add(New Employee("A"))
        people.Add(New Customer("B"))
        " Works.
        For Each person As Object In people
            Console.WriteLine(person.Name)
        Next person
    End Sub
End Class

Public Class Employee
    Public Name As String
    Public Sub New(ByVal new_name As String)
        Name = new_name
    End Sub
    Public Overridable Function IsManager() As Boolean
        Return False
    End Function
End Class
Public Class Customer
    Public Name As String
    Public Sub New(ByVal new_name As String)
        Name = new_name
    End Sub
End Class
Public Class Manager
    Inherits Employee
    Public Sub New(ByVal new_name As String)
        MyBase.new(new_name)
    End Sub
    Public Overrides Function IsManager() As Boolean
        Return True
    End Function
End Class


Loop through Collection

Imports System
Imports System.Collections
Public Class MainClass
    
    Shared Sub Main(ByVal args As String())
        Dim m_employees As New Collection
        m_employees.Add(New employee("A", "B", "Author"))
        m_employees.Add(New employee("C", "D", "Band"))
        m_employees.Add(New employee("E", "F", "Artist"))
        " Iterator.
        Dim emp As employee
        Dim employee_enumerator As IEnumerator
        employee_enumerator = m_employees.GetEnumerator()
        Do While (employee_enumerator.MoveNext)
            emp = CType(employee_enumerator.Current, Employee)
            Console.WriteLine(emp.Title & " " & emp.FirstName & " " & emp.LastName)
        Loop

        " For Each.
        For Each emp1 As employee In m_employees
            Console.WriteLine(emp1.Title & " " & emp1.FirstName & " " & emp1.LastName)
        Next emp1
    End Sub
End Class
    Public Class Employee
        Public FirstName As String
        Public LastName As String
        Public Title As String
        Public Sub New(ByVal first_name As String, ByVal last_name As String, ByVal new_title As String)
            FirstName = first_name
            LastName = last_name
            Title = new_title
        End Sub
    End Class


Store Class in a Collection and Retrieve by Name

Imports System
Imports System.Collections
 
Public Class MainClass
    Shared Sub Main(ByVal args As String())
                 
             Dim intCollection As New Collection( )
             Dim empCollection As New Collection( )
             Dim empCollection2 As New Collection( )
             " populate the Collections
             Dim i As Integer
             For i = 0 To 4
                 empCollection.Add(New EnumerableClass("A", "B"))
                 intCollection.Add((i * 5))
             Next i
             " add key/value pairs
             empCollection2.Add(New EnumerableClass("A", "B"), "A B")
             empCollection2.Add(New EnumerableClass("C", "D"), "C D")
             empCollection2.Add(New EnumerableClass("E", "F"), "E F")
             " print each member of the array
             For Each i In intCollection
                 Console.Write("{0} ", i.ToString( ))
             Next i
             Console.WriteLine( )
             Console.WriteLine("Employee collection...")
             Dim e As EnumerableClass
             For Each e In empCollection
                 Console.Write("{0} ", e.ToString( ))
             Next e
             Console.WriteLine( )
             Console.WriteLine("Employee collection 2...")
             For Each e In empCollection2
                 Console.Write("{0} ", e.ToString( ))
             Next e
             Console.WriteLine( )
             " retrieve an Employee by key
             Dim emp As EnumerableClass
             emp = empCollection2.Item("A B")
             Console.WriteLine( _
               " empID {0}", emp.ToString( ))
             " note that indexing is 1-based (rather than zero based)
             emp = empCollection2.Item(1)
             Console.WriteLine( _
               "Index(1) retrieved empID {0}", emp.ToString( ))
    End Sub
End Class
     Public Class EnumerableClass : Implements IEnumerable
         Private strings( ) As String
         Private ctr As Integer = 0
         Private Class MyEnumerator
             Implements IEnumerator
             Private currentListBox As EnumerableClass
             Private index As Integer
             Public Sub New(ByVal currentListBox As EnumerableClass)
                 Me.currentListBox = currentListBox
                 index = -1
             End Sub
             Public Function MoveNext( ) As Boolean _
               Implements IEnumerator.MoveNext
                 index += 1
                 If index >= currentListBox.strings.Length Then
                     Return False
                 Else
                     Return True
                 End If
             End Function
             Public Sub Reset( ) _
               Implements IEnumerator.Reset
                 index = -1
             End Sub
             Public ReadOnly Property Current( ) As Object _
             Implements IEnumerator.Current
                 Get
                     Return currentListBox(index)
                 End Get
             End Property
         End Class  " end nested class
         Public Function GetEnumerator( ) As IEnumerator _
         Implements IEnumerable.GetEnumerator
             Return New MyEnumerator(Me)
         End Function
         Public Sub New( _
           ByVal ParamArray initialStrings( ) As String)
             ReDim strings(7)
             Dim s As String
             For Each s In initialStrings
                 strings(ctr) = s
                 ctr += 1
             Next
         End Sub
         Public Sub Add(ByVal theString As String)
             strings(ctr) = theString
             ctr += 1
         End Sub
         Default Public Property Item( _
           ByVal index As Integer) As String
             Get
                 If index < 0 Or index >= strings.Length Then
                     " handle bad index
                     Exit Property
                 End If
                 Return strings(index)
             End Get
             Set(ByVal Value As String)
                 strings(index) = Value
             End Set
         End Property
         Public Function GetNumEntries( ) As Integer
             Return ctr
         End Function
     End Class


Store Objects in Collection and retrieve

Imports System
Imports System.Collections
Public Class MainClass
    
    Shared Sub Main()
       Dim intCollection As New Collection(  )
       Dim empCollection As New Collection(  )
       Dim empCollection2 As New Collection(  )
  
       "populate the Collections
       Dim i As Integer
       For i = 0 To 4
           empCollection.Add(New Employee(i + 100))
           intCollection.Add((i * 5))
       Next i
  
       "add key/value pairs
       empCollection2.Add(New Employee(1989), "G W")
       empCollection2.Add(New Employee(1997), "J A")
       empCollection2.Add(New Employee(1901), "T J")
  
  
       "print each member of the array
       For Each i In intCollection
           Console.Write("{0} ", i.ToString(  ))
       Next i
  
       Console.WriteLine(  )
       Console.WriteLine("Employee collection...")
       Dim e As Employee
       For Each e In empCollection
           Console.Write("{0} ", e.ToString(  ))
       Next e
  
       Console.WriteLine(  )
       Console.WriteLine("Employee collection 2...")
       For Each e In empCollection2
           Console.Write("{0} ", e.ToString(  ))
       Next e
  
       Console.WriteLine(  )
  
       "retrieve an Employee by key
       Dim emp As Employee
       emp = empCollection2.Item("J A")
       Console.WriteLine( emp.ToString(  ))
  
       "note that indexing is 1-based (rather than zero based)
       emp = empCollection2.Item(1)
       Console.WriteLine(emp.ToString(  ))
   End Sub
End Class
     Public Class Employee
         Private myEmpID As Integer
         Public Sub New(ByVal empID As Integer)
             Me.myEmpID = empID
         End Sub "New
         Public Overrides Function ToString(  ) As String
             Return myEmpID.ToString(  )
         End Function "ToString
         Public Property EmpID(  ) As Integer
             Get
                 Return myEmpID
             End Get
             Set(ByVal Value As Integer)
                 myEmpID = Value
             End Set
         End Property
     End Class "Employee