Option Strict On
Option Explicit On
Imports System.Data
Imports System.Xml
Imports System.Data.SqlClient
Imports System.Web.Configuration
' Author : Vishwa@VishwaMohan.Com
' Purpose: SQL Server Data Provider
Namespace Example.Data
Friend Class SQLProvider
Inherits DataAccess
#Region "Constructor"
Public Sub New()
End Sub
#End Region
#Region "CRUD Operation Using Various Data Trasfer Objects"
#Region "Custom Data Transfer Object"
Public Overrides Function GetCustomer(ByVal custID As Int32) As DTOCustomer
Dim record As New DTOCustomer
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_GetCustomer", connection)
With command
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@CustID", SqlDbType.Int)).Value = custID
.Connection.Open()
End With
Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
Dim custIDOrdinal As Integer = reader.GetOrdinal("Cust_ID")
Dim custNameOrdinal As Integer = reader.GetOrdinal("Cust_Name")
Dim custDOBOrdinal As Integer = reader.GetOrdinal("Cust_DOB")
Dim custAddressOrdinal As Integer = reader.GetOrdinal("Cust_Address")
Dim custDateCreatedOrdinal As Integer = reader.GetOrdinal("Date_Created")
Dim custDateModifiedOrdinal As Integer = reader.GetOrdinal("Date_Modified")
If reader.Read Then
If Not reader.IsDBNull(custIDOrdinal) Then record.CustID = reader.GetInt32(custIDOrdinal)
If Not reader.IsDBNull(custNameOrdinal) Then record.CustName = reader.GetString(custNameOrdinal)
If Not reader.IsDBNull(custDOBOrdinal) Then record.CustDOB = reader.GetDateTime(custDOBOrdinal)
If Not reader.IsDBNull(custAddressOrdinal) Then record.CustAddress = reader.GetString(custAddressOrdinal)
If Not reader.IsDBNull(custDateCreatedOrdinal) Then record.DateCreated = reader.GetDateTime(custDateCreatedOrdinal)
If Not reader.IsDBNull(custDateModifiedOrdinal) Then record.DateModified = reader.GetDateTime(custDateModifiedOrdinal)
End If
End Using
End Using
End Using
Return record
End Function
Public Overrides Function GetCustomers() As List(Of DTOCustomer)
Dim records As New List(Of DTOCustomer)
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_GetCustomers", connection)
With command
.CommandType = CommandType.StoredProcedure
.Connection.Open()
End With
Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
Dim custIDOrdinal As Integer = reader.GetOrdinal("Cust_ID")
Dim custNameOrdinal As Integer = reader.GetOrdinal("Cust_Name")
Dim custDOBOrdinal As Integer = reader.GetOrdinal("Cust_DOB")
Dim custAddressOrdinal As Integer = reader.GetOrdinal("Cust_Address")
Dim custDateCreatedOrdinal As Integer = reader.GetOrdinal("Date_Created")
Dim custDateModifiedOrdinal As Integer = reader.GetOrdinal("Date_Modified")
Do While reader.Read
Dim record As New DTOCustomer
If Not reader.IsDBNull(custIDOrdinal) Then record.CustID = reader.GetInt32(custIDOrdinal)
If Not reader.IsDBNull(custNameOrdinal) Then record.CustName = reader.GetString(custNameOrdinal)
If Not reader.IsDBNull(custDOBOrdinal) Then record.CustDOB = reader.GetDateTime(custDOBOrdinal)
If Not reader.IsDBNull(custAddressOrdinal) Then record.CustAddress = reader.GetString(custAddressOrdinal)
If Not reader.IsDBNull(custDateCreatedOrdinal) Then record.DateCreated = reader.GetDateTime(custDateCreatedOrdinal)
If Not reader.IsDBNull(custDateModifiedOrdinal) Then record.DateModified = reader.GetDateTime(custDateModifiedOrdinal)
records.Add(record)
Loop
End Using
End Using
End Using
Return records
End Function
Public Overrides Function InsertCustomer(ByVal custRecord As DTOCustomer) As Integer
Return InsertCustomer(custRecord.CustName, custRecord.CustDOB, custRecord.CustAddress)
End Function
Public Overrides Function UpdateCustomer(ByVal custRecord As DTOCustomer) As Boolean
Return UpdateCustomer(custRecord.CustID, custRecord.CustName, custRecord.CustDOB, custRecord.CustAddress)
End Function
Public Overrides Function DeleteCustomer(ByVal custRecord As DTOCustomer) As Boolean
Return DeleteCustomer(custRecord.CustID)
End Function
#End Region
#Region "Insert/Update/Delete Methods"
Public Overrides Function InsertCustomer(ByVal custName As String, ByVal custDOB As DateTime, _
ByVal custAddress As String) As Integer
Dim returnValue As Integer = 0
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_InsertCustomer", connection)
With command
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@ReturnID", SqlDbType.Int)).Direction = ParameterDirection.ReturnValue
.Parameters.Add(New SqlParameter("@CustName", SqlDbType.VarChar, 50)).Value = custName
.Parameters.Add(New SqlParameter("@CustDOB", SqlDbType.DateTime)).Value = custDOB
.Parameters.Add(New SqlParameter("@CustAddress", SqlDbType.VarChar, 100)).Value = custAddress
.Connection.Open()
.ExecuteNonQuery()
returnValue = CInt(command.Parameters("@ReturnID").Value)
End With
End Using
End Using
Return returnValue
End Function
Public Overrides Function UpdateCustomer(ByVal custID As Integer, ByVal custName As String, _
ByVal custDOB As DateTime, ByVal custAddress As String) As Boolean
Dim returnValue As Integer = 0
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_UpdateCustomer", connection)
With command
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@ReturnID", SqlDbType.Int)).Direction = ParameterDirection.ReturnValue
.Parameters.Add(New SqlParameter("@CustID", SqlDbType.Int)).Value = custID
.Parameters.Add(New SqlParameter("@CustName", SqlDbType.VarChar, 50)).Value = custName
.Parameters.Add(New SqlParameter("@CustDOB", SqlDbType.DateTime)).Value = custDOB
.Parameters.Add(New SqlParameter("@CustAddress", SqlDbType.VarChar, 100)).Value = custAddress
.Connection.Open()
.ExecuteNonQuery()
returnValue = CInt(command.Parameters("@ReturnID").Value)
End With
End Using
End Using
Return (returnValue > 0)
End Function
Public Overrides Function DeleteCustomer(ByVal custID As Integer) As Boolean
Dim returnValue As Integer = 0
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_DeleteCustomer", connection)
With command
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@ReturnID", SqlDbType.Int)).Direction = ParameterDirection.ReturnValue
.Parameters.Add(New SqlParameter("@CustID", SqlDbType.Int)).Value = custID
.Connection.Open()
.ExecuteNonQuery()
returnValue = CInt(command.Parameters("@ReturnID").Value)
End With
End Using
End Using
Return (returnValue > 0)
End Function
#End Region
#Region "Implementing Two Methods with Other Data Trasfer Objects"
#Region "XML String"
Public Overrides Function GetCustomerAsXMLString(ByVal custID As Int32) As String
Return GetCustomerAsDataSet(custID).GetXml
End Function
Public Overrides Function GetCustomersAsXMLString() As String
Return GetCustomersAsDataSet().GetXml
End Function
#End Region
#Region "DataSet Object"
Public Overrides Function GetCustomerAsDataSet(ByVal custID As Int32) As DataSet
Dim resultDataSet As New DataSet("Customers")
Using connection As New SqlConnection(ConnectionString)
Using dataAdapter As New SqlDataAdapter("dbo.Usp_GetCustomer", connection)
With dataAdapter
.SelectCommand.CommandType = CommandType.StoredProcedure
.SelectCommand.Parameters.Add(New SqlParameter("@CustID", SqlDbType.Int)).Value = custID
.Fill(resultDataSet, "Customer")
End With
End Using
End Using
Return resultDataSet
End Function
Public Overrides Function GetCustomersAsDataSet() As DataSet
Dim resultDataSet As New DataSet("Customers")
Using connection As New SqlConnection(ConnectionString)
Using dataAdapter As New SqlDataAdapter("dbo.Usp_GetCustomers", connection)
With dataAdapter
.SelectCommand.CommandType = CommandType.StoredProcedure
.Fill(resultDataSet, "Customer")
End With
End Using
End Using
Return resultDataSet
End Function
#End Region
#Region "DataTable Object"
Public Overrides Function GetCustomerAsDataTable(ByVal custID As Integer) As DataTable
Dim recordDataTable As New DataTable("Customer")
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_GetCustomer", connection)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add(New SqlParameter("@CustID", SqlDbType.Int)).Value = custID
command.Connection.Open()
Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
recordDataTable.Load(reader)
End Using
End Using
End Using
Return recordDataTable
End Function
Public Overrides Function GetCustomersAsDataTable() As DataTable
Dim recordDataTable As New DataTable("Customers")
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_GetCustomers", connection)
command.CommandType = CommandType.StoredProcedure
command.Connection.Open()
Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
recordDataTable.Load(reader)
End Using
End Using
End Using
Return recordDataTable
End Function
#End Region
#Region "ArrayList Object"
Public Overrides Function GetCustomerAsArrayList(ByVal custID As Int32) As ArrayList
Dim arrCustomer As New ArrayList()
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_GetCustomer", connection)
With command
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@CustID", SqlDbType.Int)).Value = custID
.Connection.Open()
End With
Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
Dim custIDOrdinal As Integer = reader.GetOrdinal("Cust_ID")
Dim custNameOrdinal As Integer = reader.GetOrdinal("Cust_Name")
Dim custDOBOrdinal As Integer = reader.GetOrdinal("Cust_DOB")
Dim custAddressOrdinal As Integer = reader.GetOrdinal("Cust_Address")
Dim custDateCreatedOrdinal As Integer = reader.GetOrdinal("Date_Created")
Dim custDateModifiedOrdinal As Integer = reader.GetOrdinal("Date_Modified")
If reader.Read Then
arrCustomer.Add(reader.Item(custIDOrdinal))
arrCustomer.Add(reader.Item(custNameOrdinal))
arrCustomer.Add(reader.Item(custDOBOrdinal))
arrCustomer.Add(reader.Item(custAddressOrdinal))
arrCustomer.Add(reader.Item(custDateCreatedOrdinal))
arrCustomer.Add(reader.Item(custDateModifiedOrdinal))
End If
End Using
End Using
End Using
arrCustomer.TrimToSize()
Return arrCustomer
End Function
Public Overrides Function GetCustomersAsArrayList() As ArrayList
Dim arrCustomers As New ArrayList()
Using connection As New SqlConnection(ConnectionString)
Using command As New SqlCommand("dbo.Usp_GetCustomers", connection)
With command
.CommandType = CommandType.StoredProcedure
.Connection.Open()
End With
Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
Dim custIDOrdinal As Integer = reader.GetOrdinal("Cust_ID")
Dim custNameOrdinal As Integer = reader.GetOrdinal("Cust_Name")
Dim custDOBOrdinal As Integer = reader.GetOrdinal("Cust_DOB")
Dim custAddressOrdinal As Integer = reader.GetOrdinal("Cust_Address")
Dim custDateCreatedOrdinal As Integer = reader.GetOrdinal("Date_Created")
Dim custDateModifiedOrdinal As Integer = reader.GetOrdinal("Date_Modified")
Do While reader.Read
Dim arrCustomer As New ArrayList
arrCustomer.Add(reader.Item(custIDOrdinal))
arrCustomer.Add(reader.Item(custNameOrdinal))
arrCustomer.Add(reader.Item(custDOBOrdinal))
arrCustomer.Add(reader.Item(custAddressOrdinal))
arrCustomer.Add(reader.Item(custDateCreatedOrdinal))
arrCustomer.Add(reader.Item(custDateModifiedOrdinal))
arrCustomer.TrimToSize()
arrCustomers.Add(arrCustomer)
Loop
End Using
End Using
End Using
arrCustomers.TrimToSize()
Return arrCustomers
End Function
#End Region
#End Region
#End Region
End Class
End Namespace