之前因为在三层的时候对SqlHelper没有太多的了解,导致在七层的时候吃了大亏。
下面简单的介绍一下SqlHelper
SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
在机房重构的时候与数据的交互,增删改查都包括了,所以会经常需要调用数据库的代码。对数据的操作分为了两大类查询和增删改,然后在根据是否含有参数定义四个函数。
为什么要分成这两大类呢?因为查询返回的是DataTable,而增删改没有返回结果。
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data
Imports System.Reflection
Public Class sqlHelper
Public Shared ConnectionString As String = ConfigurationManager.AppSettings("ConnString")
''' <summary>
''' 执行带参数的查询操作
''' </summary>
''' <param name="cmdTxt">参数cmdTxt为所要执行的sql语句</param>
''' <param name="cmdType">查询时的查询方式</param>
''' <param name="paras">查询时的命令参数paras</param>
''' <returns>查询后以表的方式返回,如下面的adataset.Tables(0)</returns>
''' <remarks></remarks>
Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
Dim conn As SqlConnection = New SqlConnection(ConnectionString) '建立数据库连接
Dim cmd As SqlCommand '定义命令变量cmd
Dim adaptor As SqlDataAdapter '定义数据适配器
Dim adataset As DataSet '定义并实例化数据缓冲区对象,即从数据库传入的对象。
cmd = New SqlCommand(cmdTxt, conn) '在conn上面执行实例化命令变量,并执行语句cmdType
cmd.CommandType = cmdType '命令执行的类型
cmd.Parameters.AddRange(paras) '命令执行时的参数
adaptor = New SqlDataAdapter(cmd) '将结果绑定到数据适配器变量adaptor上面
adataset = New DataSet
Try
'如果数据库连接状态为关闭则将其打开
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
adaptor.Fill(adataset) '向adaptor对象中填充查询的数据
Catch ex As Exception
'错误处理程序,出错则提示
MsgBox(ex.Message, , "数据库操作")
Finally
'如果连接状态为打开则将其关闭,释放内存
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
'以表格形式返回结果
Return adataset.Tables(0)
End Function
'查询操作,不带参数,返回结果是表
Public Shared Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType) As DataTable
Dim conn As SqlConnection = New SqlConnection(ConnectionString) '建立数据库连接
Dim cmd As SqlCommand '定义命令变量cmd
Dim adaptor As SqlDataAdapter '定义数据适配器
Dim adataset As DataSet '定义并实例化数据缓冲区对象,即从数据库传入的对象。
cmd = New SqlCommand(cmdTxt, conn) '在conn上面执行实例化命令变量,并执行语句cmdType
cmd.CommandType = cmdType '命令执行的类型
adaptor = New SqlDataAdapter(cmd) '将结果绑定到数据适配器变量adaptor上面
adataset = New DataSet
Try
'如果数据库连接状态为关闭则将其打开
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
adaptor.Fill(adataset) '向adaptor对象中填充查询的数据
Catch ex As Exception
'错误处理程序,出错则提示
MsgBox(ex.Message, , "数据库操作")
Finally
'如果连接状态为打开则将其关闭,释放内存
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
'以表格形式返回结果
Return adataset.Tables(0)
End Function
'增删改操作,带参数,没有返回结果
Public Function NoReturn(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter())
Dim conn As SqlConnection = New SqlConnection(ConnectionString) '建立数据库连接
Dim cmd As SqlCommand '定义命令变量cmd
Dim adaptor As SqlDataAdapter '定义数据适配器
Dim adataset As DataSet '定义并实例化数据缓冲区对象,即从数据库传入的对象。
cmd = New SqlCommand(cmdTxt, conn) '在conn上面执行实例化命令变量,并执行语句cmdType
cmd.CommandType = cmdType '命令执行的类型
cmd.CommandText = cmdTxt
cmd.Parameters.AddRange(paras) '命令执行时的参数
adaptor = New SqlDataAdapter(cmd) '将结果绑定到数据适配器变量adaptor上面
adataset = New DataSet
Try
conn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, , "数据库操作")
Finally
'如果连接状态为打开则将其关闭,释放内存
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return True
End Function
'增删改操作,不带参数,没有返回结果
Public Function NoReturn(ByVal cmdTxt As String, ByVal cmdType As CommandType)
Dim conn As SqlConnection = New SqlConnection(ConnectionString) '建立数据库连接
Dim cmd As SqlCommand '定义命令变量cmd
Dim adaptor As SqlDataAdapter '定义数据适配器
Dim adataset As DataSet '定义并实例化数据缓冲区对象,即从数据库传入的对象。
cmd = New SqlCommand(cmdTxt, conn) '在conn上面执行实例化命令变量,并执行语句cmdType
cmd.CommandType = cmdType '命令执行的类型
cmd.CommandText = cmdTxt
adaptor = New SqlDataAdapter(cmd) '将结果绑定到数据适配器变量adaptor上面
adataset = New DataSet
Try
conn.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, , "数据库操作")
Finally
'如果连接状态为打开则将其关闭,释放内存
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return True
End Function
End Class