VB.Net/Database ADO.net/Database Reader

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

Execute Reader Example

<source lang="vbnet">

Imports System Imports System.Data Imports System.Data.SqlClient

   Public Class MainClass
       Public Shared Sub ExecuteReaderExample(ByVal con As IDbConnection)
           Dim com As IDbCommand = con.CreateCommand
           com.rumandType = CommandType.Text
           com.rumandText = "SET ROWCOUNT 10;SELECT Production.Product.Name, Production.Product.ListPrice FROM Production.Product ORDER BY Production.Product.ListPrice DESC;SET ROWCOUNT 0;"
           Using reader As IDataReader = com.ExecuteReader
               While reader.Read
                   Console.WriteLine("  {0} = {1}", reader("Name"), reader("ListPrice"))
               End While
           End Using
       End Sub
       Public Shared Sub Main()
           Using con As New SqlConnection
               con.ConnectionString = "Data Source=.\sqlexpress;Database=AdventureWorks;Integrated Security=SSPI;"
               con.Open()
               ExecuteReaderExample(con)
               con.Close()
           End Using
       End Sub
   End Class
  
   
 </source>


Execute Scalar Example

<source lang="vbnet">

Imports System Imports System.Data Imports System.Data.SqlClient

   Public Class MainClass
       Public Shared Sub ExecuteScalarExample(ByVal con As IDbConnection)
           Dim com As IDbCommand = con.CreateCommand
           com.rumandType = CommandType.Text
           com.rumandText = "SELECT COUNT(*) FROM HumanResources.Employee;"
           Dim result As Integer = CInt(com.ExecuteScalar)
           Console.WriteLine("Employee count = " & result)
       End Sub
       Public Shared Sub Main()
           Using con As New SqlConnection
               con.ConnectionString = "Data Source=.\sqlexpress;Database=AdventureWorks;Integrated Security=SSPI;"
               con.Open()
               ExecuteScalarExample(con)
               con.Close()
           End Using
       End Sub
   End Class
  
   
 </source>


Execute the command and retrieve and XmlReader to access the results

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

   Public Class MainmClass
       Public Shared Sub ConnectedExample()
           Using con As New SqlConnection
               con.ConnectionString = "Data Source=.\sqlexpress;Database=AdventureWorks;Integrated Security=SSPI;"
               Using com As SqlCommand = con.CreateCommand
                   com.rumandType = CommandType.Text
                   com.rumandText = "SELECT DepartmentID, [Name], GroupName FROM HumanResources.Department FOR XML AUTO"
                   con.Open()
                   " .
                   Using reader As XmlReader = com.ExecuteXmlReader
                       While reader.Read
                           If reader.NodeType = XmlNodeType.Element Then
                               Dim currentEle As XElement = XElement.ReadFrom(reader)
                               Console.WriteLine("Element:  {0}", currentEle.Name)
                               If currentEle.HasAttributes Then
                                   For i As Integer = 0 To currentEle.Attributes.Count - 1
                                       Console.Write("  {0}: {1}", currentEle.Attributes()(i).Name, currentEle.Attributes()(i).Value)
                                   Next
                               End If
                           End If
                       End While
                   End Using
                   con.Close()
               End Using
           End Using
       End Sub
       Public Shared Sub Main()
           ConnectedExample()
       End Sub
   End Class
  
   
 </source>


Select top 5 Records in data table

<source lang="vbnet"> Imports System Imports System.Collections Imports System.Data Imports System.IO Imports System.Xml.Serialization Imports System.Xml Imports System.Windows.Forms Imports System.Data.SqlClient

Public Class MainClass

   Shared Dim WithEvents con As SqlConnection
   Shared Sub Main()
       con = New SqlConnection("Server=(local)\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=SSPI") 
       Dim cmd As New SqlCommand()
       cmd.rumandText = "SELECT TOP 5 FirstName, LastName FROM Employee"
       cmd.Connection = con
       Try
           con.Open()
           Dim reader As SqlDataReader = cmd.ExecuteReader()
           While reader.Read()
               Console.WriteLine( _
                      "{0} - {1}", reader.GetString(0), reader.GetString(1))
           End While
           reader.Close()
       Finally
           con.Close()
       End Try
   End Sub
   Shared Sub con_StateChange(ByVal Sender As Object, _
                ByVal E As StateChangeEventArgs) Handles con.StateChange
       Console.WriteLine( _
                  "{0} - {1}", "ConnectionState", E.CurrentState.ToString())
   End Sub

End Class


 </source>


Use SqlDataReader to read a single row of data

<source lang="vbnet"> Imports System Imports System.Collections Imports System.Data Imports System.IO Imports System.Xml.Serialization Imports System.Xml Imports System.Windows.Forms Imports System.Data.SqlClient

Public Class MainClass

   Shared Dim WithEvents con As SqlConnection
   Shared Sub Main()
       con = New SqlConnection("Server=(local)\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=SSPI") 
       Dim cmd As New SqlCommand()
       cmd.rumandText = "SELECT FirstName, LastName FROM Employee"
       cmd.Connection = con
       Try
           con.Open()
           Dim reader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleRow)
           While reader.Read()
               Console.WriteLine("{0} - {1}", _
                               reader.GetString(0), reader.GetString(1))
           End While
           reader.Close()
       Finally
           con.Close()
       End Try
   End Sub

End Class


 </source>