VB.Net/Database ADO.net/SqlDataReader
Содержание
- 1 Employee Table Metadata
- 2 Format data when reading the data from SqlDataReader
- 3 From SqlDataReader get Column Name
- 4 Get data from SqlDataReader by Data type
- 5 Get info about each column: Name, Ordinal and FieldType
- 6 Get number of columns in SqlDataReader
- 7 Use column name to index data
- 8 Use SqlDataReader.Read to read result set
Employee Table Metadata
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class MainClass
Public Shared Sub Main()
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 e.BirthDate,c.FirstName,c.LastName FROM HumanResources.Employee e INNER JOIN Person.Contact c ON e.EmployeeID=c.ContactID ORDER BY e.BirthDate;SELECT * FROM HumanResources.Employee"
con.Open()
Using reader As SqlDataReader = com.ExecuteReader
While reader.Read
Console.WriteLine(" {0,18:D} - {1} {2}", reader.GetDateTime(0), reader("FirstName"), reader(2))
End While
If (reader.NextResult()) Then
For field As Integer = 0 To reader.FieldCount - 1
Console.WriteLine(" Column Name:{0} Type:{1}", reader.GetName(field), reader.GetDataTypeName(field))
Next
End If
End Using
con.Close()
End Using
End Using
End Sub
End Class
Format data when reading the data from SqlDataReader
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 1
Dim sql As String ="SELECT FirstName, LastName FROM Employee; "
"Create Command object
Dim thisCommand As New SqlCommand _
(sql, thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
While (thisReader.Read())
" Get column values for all rows
Console.WriteLine("{0} | {1}", _
thisReader.GetString(0).PadLeft(25), _
thisReader.GetString(1))
End While
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class
From SqlDataReader get Column Name
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 1
Dim sql As String ="SELECT FirstName, LastName FROM Employee; "
"Create Command object
Dim thisCommand As New SqlCommand _
(sql, thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
" Get column names
Console.WriteLine("Column Names: {0} | {1}", _
thisReader.GetName(0).PadLeft(11), _
thisReader.GetName(1))
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class
Get data from SqlDataReader by Data type
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 ID, FirstName FROM Employee"
"Create Command object
Dim thisCommand As New SqlCommand(sql, thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
" Fetch Data
While (thisReader.Read())
Console.WriteLine("{0} | {1} ", _
thisReader.GetInt32(0), _
thisReader.GetString(1).PadLeft(32))
End While
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class
Get info about each column: Name, Ordinal and FieldType
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 1
Dim sql As String ="SELECT FirstName, LastName FROM Employee; "
"Create Command object
Dim thisCommand As New SqlCommand _
(sql, thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
" Get info about each column
Console.WriteLine(""{0}" has index {1} and type {2}", _
thisReader.GetName(0), _
thisReader.GetOrdinal("FirstName"), _
thisReader.GetFieldType(0))
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class
Get number of columns in SqlDataReader
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 1
Dim sql As String ="SELECT FirstName, LastName FROM Employee; "
"Create Command object
Dim thisCommand As New SqlCommand _
(sql, thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
" Get number of columns
Console.WriteLine()
Console.WriteLine("Number of columns in a row: {0}", _
thisReader.FieldCount)
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class
Use column name to index data
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 1
Dim sql As String ="SELECT FirstName, LastName FROM Employee; "
"Create Command object
Dim thisCommand As New SqlCommand _
(sql, thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
Console.WriteLine("{0} {1}", _
"First Name".PadLeft(25), _
"Last Name".PadLeft(25))
While (thisReader.Read())
Console.WriteLine("{0} | {1}", _
thisReader("FirstName").ToString().PadLeft(25), _
thisReader("LastName").ToString().PadLeft(25))
End While
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class
Use SqlDataReader.Read to read result set
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 thisCommand As New SqlCommand _
("SELECT FirstName FROM Employee", _
thisConnection)
Try
" Open Connection
thisConnection.Open()
Console.WriteLine("Connection Opened")
" Execute Query
Dim thisReader As SqlDataReader = thisCommand.ExecuteReader()
While (thisReader.Read())
Console.WriteLine("Name: {0}", _
thisReader(0))
End While
"Close DataReader
thisReader.Close()
Catch ex As SqlException
" Display error
Console.WriteLine("Error: " & ex.ToString())
Finally
" Close Connection
thisConnection.Close()
Console.WriteLine("Connection Closed")
End Try
End Sub
End Class