home
-- Calling Stored Procedures from VB.net.
Author Nigel Rivett
This calls a stored procedure and returns a dataset.
The connection is opened and closed on every call.
DalOLEDb isn't complete but should be easy to finish off.
It has hard coded connection strings which you should replace.
Option Strict On
#Const DalSQL = True
#Const DalOLEDb = False
#Const Dev = False
Dim dal As New DAL
Dim sqlparams() As System.Data.SqlClient.SqlParameter
Dim Param As New DALSQLParam
Dim Resultset As System.Data.DataSet
ReDim Preserve sqlparams(0)
sqlparams(UBound(sqlparams)) = Param.Param("@system_id", "int", CType(id, String), "input")
ReDim Preserve sqlparams(UBound(sqlparams) + 1)
sqlparams(UBound(sqlparams)) = Param.Param("@value", "string", CType(value, String), "input")
' get the data - call stored procedure mysp
Resultset = dal.GetResultset("mySP", sqlparams)
sqlparams = Nothing
#Region "DAL"
Friend Class DAL
#If DalOLEDb = True Then
Friend Function OpenConnection() As OleDb.OleDbConnection
Dim cn As New OleDb.OleDbConnection
Dim param As OleDb.OleDbParameter
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=(local);UID=sa;PWD=mypwd;Initial Catalog=mydatabase"
' cn.ConnectionString = "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=mydatabase"
cn.Open()
Return cn
End Function
#End If
#If DalSQL = True Then
Private Function OpensqlConnection() As System.Data.SqlClient.SqlConnection
Dim cn As System.Data.SqlClient.SqlConnection
Dim param As OleDb.OleDbParameter
cn = New System.Data.SqlClient.SqlConnection
#if Dev = true then
cn.ConnectionString = "Data Source=(local);UID=sa;PWD=mypwd;Initial Catalog=mydatabase"
'cn.ConnectionString = "Provider=SQLOLEDB;Data Source=(local);UID=sa;PWD=mypwd;Initial Catalog=mydatabase"
' cn.ConnectionString = "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=mydatabase"
#Else
cn.ConnectionString = "Data Source=myserver;Initial Catalog=mydatabase;Integrated Security=SSPI"
#End If
cn.Open()
Return cn
End Function
Friend Function GetResultset(ByVal spname As String, ByVal params() As System.Data.sqlclient.SqlParameter) As System.Data.DataSet
Dim cn As System.Data.SqlClient.SqlConnection
Dim ds As System.Data.DataSet
Dim da As System.Data.SqlClient.SqlDataAdapter
Dim param As System.Data.SqlClient.SqlParameter
Dim cmd As System.Data.SqlClient.SqlCommand
' create command object
cmd = New System.Data.SqlClient.SqlCommand
'get parameters
If Not params Is Nothing Then
For Each param In params
cmd.Parameters.Add(param)
Next
End If
' set sp name
cmd.CommandText = spname
cmd.CommandType = CommandType.StoredProcedure
' connect to database
cn = OpensqlConnection()
cmd.Connection = cn
' Fill DataSet from DataAdapter
da = New System.Data.SqlClient.SqlDataAdapter
da.SelectCommand = cmd
ds = New System.Data.DataSet
da.Fill(ds)
' clear up
da = Nothing
cmd = Nothing
cn.Close()
Return ds
End Function
#End If
End Class
#If DalSQL = True Then
Friend Class DALSQLParam
Friend Function Param(ByVal name As String, ByVal Type As String, ByVal value As String, ByVal direction As String) As System.Data.SqlClient.SqlParameter
Dim oParam As New System.Data.SqlClient.SqlParameter
If direction = "output" Then
oParam.Direction = ParameterDirection.InputOutput
Else
oParam.Direction = ParameterDirection.Input
End If
If Type = "int" Then
oParam.SqlDbType = SqlDbType.Int
ElseIf Type = "string" Then
oParam.SqlDbType = SqlDbType.VarChar
If Len(value) = 0 Then
oParam.Size = 1
Else
oParam.Size = Len(value)
End If
ElseIf Type = "date" Then
oParam.SqlDbType = SqlDbType.DateTime
End If
oParam.ParameterName = name
oParam.Value = value
Return oParam
End Function
#End If
End Class
#If DalOLEDb = True Then
Friend Class DALParam
Friend Function Param(ByVal name As String, ByVal Type As String, ByVal value As String, ByVal direction As String) As OleDb.OleDbParameter
Dim oParam As New OleDb.OleDbParameter
If direction = "output" Then
oParam.Direction = ParameterDirection.InputOutput
Else
oParam.Direction = ParameterDirection.Input
End If
If Type = "int" Then
oParam.OleDbType = System.Data.OleDb.OleDbType.Integer
ElseIf Type = "string" Then
oParam.OleDbType = System.Data.OleDb.OleDbType.VarChar
If Len(value) = 0 Then
oParam.Size = 1
Else
oParam.Size = Len(value)
End If
ElseIf Type = "date" Then
oParam.OleDbType = System.Data.OleDb.OleDbType.DBTimeStamp
End If
oParam.ParameterName = name
oParam.Value = value
Return oParam
End Function
End Class
#End If
#End Region
home