什么是sqlhelper
sqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。sqlHelper用于简化你重复的去写那些数据库连接(sqlConnection),sqlCommand,sqlDataReader等等。sqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,sql参数等,就可以访问数据库了,很方便。
为什么要用sqlhelper
简单的说就是简化操作,提高效率。
我们都知道D层用于执行与数据库有关的操作。每当执行与数据库有关的操作时,就需要执行一遍数据库操作的语言,然后对其进行增、删、改、查,这时就会出现很多重复或者说类似的代码,会出现冗余,也容易产生错误。
为了提高效率,我们把这些数据库操作语言封装成一个类,再对其进行操作。既使D层减负,也使代码减少耦合,程序的执行更加高效。
怎么用sqlhelper
(一)基本介绍
1.数据库操作包括增删改查4类,简单点,可以划分成两类:查询(查)、更新(增删改)。
据此,sqlhelper类的内容主要分为4类:
(1)带参数的更新(增删改)语句或存储过程 ---------------返回受影响行数
(2)不带参数的更新(增删改)语句或存储过程 ---------------返回受影响行数
(3)带参数的查询语句或存储过程 ---------------返回结果集
(4)不带参数的查询语句或存储过程 ---------------返回结果集
2.该类中实现的方法包括:
(1)ExecuteNonQuery:用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。 (针对更新操作)
(2)ExecuteReader:用于返回sqlDataReader对象,该对象包含由某一命令返回的结果集。 (针对查询操作)
(3)ExecuteDataset:返回DataSet对象,该对象包含由某一命令返回的结果集。
(二)内容详解
1.带参数VS不带参数
带参数表示有传入值,不带参数表示无传入值。
在进行数据库操作时,我们需要得到的信息无非分为——全部信息、部分信息。当我们需要一张表的全部信息时,不需要参数,但如果是部分信息,此时要用到查询条件,也就需要参数。
2.返回值
就是指方法(函数)结束后需要返回给调用者的值。我们定义一种方法,肯定是想得到相应的结果,返回值就是给出我们一个结果。
比如,我提出一个问题“你今天吃早饭了吗?”“吃”或者“没吃”是回答也是返回值。
3.返回受影响行数VS返回表
返回受影响行数和返回表都是返回值的子类。
当我们进行对数据库的更新(增删改)操作时,需返回受影响行数,反映信息是否被修改。此时,如果受影响行数大于0,说明可以查到数据,信息更新成功,否则结果相反。
当我们进行对数据库的查询操作时,需要返回DataTable虚拟表(它是一个临时保存数据的网格虚拟表),如果表的行数大于0,说明表中存在数据,可以查到记录,否则说明无法查到记录。
<appSettings>
<add key="sqlConnectStr" value="Server=.;Database=charge_sys;User ID=sa;Password=123456"/>
<add key="DB" value="DAL"/>
</appSettings>
@H_
403_222@Imports System.Data.
sqlClient
Imports System.Configuration
Imports System.Data
Imports System.Reflection
Public Class
sqlhelper
'configurationManager表示读
配置文件;
'appsetting
获取配置文件的数据;
Public Shared ConnectionString As String = ConfigurationManager.AppSettings("
sqlConnectStr")
'
sqlDataAdapter表示用于填充Data.Dataset和更新
sql SERVER
数据库的一组数组命令和一个
数据库连接;
Private Shared Property adaptor As
sqlDataAdapter
''' <summary>
''' 带参数的更新操作
''' </summary>
''' <param name="cmdText">增删改语句或者存储过程</param>
''' <param name="cmdType">命令类型文本或者存储过程</param>
''' <param name="paras">参数数组</param>
''' <returns>受影响行数</returns>
''' <remarks></remarks>
Public Shared Function ExecuteNoQuery(ByVal cmdText As String,ByVal cmdType As CommandType,ByVal paras As
sqlParameter()) As Integer
'定义一个连接字符串
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("
sqlConnectStr")
'定义一个
数据库连接对象
Dim conn As
sqlConnection = New
sqlConnection(strConnStr)
Dim cmd As New
sqlCommand '定义一个命令对象
Dim res As Integer '定义一个变量
用户存放返回结果
cmd = New
sqlCommand(cmdText,conn)
cmd.CommandType = cmdType
cmd.Parameters.AddRange(paras)
Try
'打开数据连接
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
'执行
查询操作
res = cmd.ExecuteNonQuery()
Catch ex As Exception
Msg
Box(ex.Message,"
数据库操作")
Finally
'
关闭数据库连接
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return res '返回受影响的行数
End Function
''' <summary>
''' 不带参数的更新操作
''' </summary>
''' <param name="cmdTxt">增删改
sql语句或者存储过程</param>
''' <param name="cmdType">命令类型文本或者存储过程</param>
''' <returns>受影响的行数</returns>
''' <remarks></remarks>
Public Shared Function ExecuteNoQuery(ByVal cmdTxt As String,ByVal cmdType As CommandType) As Integer
'定义一个连接字符串
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("
sqlConnectStr")
'定义一个
数据库连接对象
Dim conn As
sqlConnection = New
sqlConnection(strConnStr)
Dim cmd As New
sqlCommand '定义一个命令对象
Dim res As Integer '定义一个变量
用户存放返回结果
cmd = New
sqlCommand(cmdTxt,conn)
cmd.CommandType = cmdType
Try
'打开
数据库连接
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
'执行命令
res = cmd.ExecuteNonQuery()
Catch ex As Exception
Msg
Box(ex.Message,"
数据库操作")
Finally
'
关闭数据库连接
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return res '返回受影响的行数
End Function
''' <summary>
''' 不带参数的
查询操作
''' </summary>
''' <param name="cmdtxt">
查询sql语句或者存储过程</param>
''' <param name="cmdType">命令类型(文本或者存储过程)</param>
''' <returns>结果集</returns>
''' <remarks></remarks>
Public Shared Function GetDataTable(ByVal cmdtxt As String,ByVal cmdType As CommandType) As DataTable
'定义一个连接字符串
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("
sqlConnectStr")
'定义一个
数据库连接对象
Dim conn As
sqlConnection = New
sqlConnection(strConnStr)
Dim cmd As New
sqlCommand '定义一个命令对象
Dim adataset As DataSet
Dim adaptor As
sqlDataAdapter '定义一个适配器对象
cmd = New
sqlCommand(cmdtxt,conn)
adaptor = New
sqlDataAdapter(cmd)
adataset = New DataSet
cmd.CommandType = cmdType
Try
'打开
数据库连接
If conn.State = ConnectionState.Closed Then
conn.Open()
'填充数据集
adaptor.Fill(adataset)
End If
Catch ex As Exception
Msg
Box(ex.Message,"
数据库操作")
Finally
'
关闭数据库连接
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return adataset.Tables("table") '返回数据集的第一个表
End Function
''' <summary>
''' 带参数的
查询操作
''' </summary>
''' <param name="cmdTxt">
查询sql语句或者存储过程
名称</param>
''' <param name="cmdType">命令类型(文本或者存储过程)</param>
''' <param name="paras">参数数组</param>
''' <returns>结果集</returns>
''' <remarks></remarks>
Public Shared Function GetDataTable(ByVal cmdTxt As String,ByVal paras As
sqlParameter()) As DataTable
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("
sqlConnectStr")
'定义一个
数据库连接对象
Dim conn As
sqlConnection = New
sqlConnection(strConnStr)
Dim cmd As New
sqlCommand '定义一个命令对象
Dim adataset As DataSet
Dim adaptor As
sqlDataAdapter '定义一个适配器对象
cmd = New
sqlCommand(cmdTxt,conn)
adaptor = New
sqlDataAdapter(cmd)
adataset = New DataSet
cmd.CommandType = cmdType
cmd.Parameters.AddRange(paras)
Try
'打开
数据库连接
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
'填充数据集
adaptor.Fill(adataset)
Catch ex As Exception
Msg
Box(ex.Message,"
数据库操作")
Finally
'
关闭数据库连接
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return adataset.Tables("table")
End Function
''' <summary>
'''
获取一个不带参数的
查询结果阅读器
''' </summary>
''' <param name="cmdTxt">
查询的
sql语句或者存储过程
名称</param>
''' <param name="cmdType">命令类型(文本或者存储过程)</param>
''' <returns>
查询结果</returns>
''' <remarks></remarks>
Public Shared Function GetReader(ByVal cmdTxt As String,ByVal cmdType As CommandType) As
sqlDataReader
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("
sqlConnectStr")
'定义一个
数据库连接对象
Dim conn As
sqlConnection = New
sqlConnection(strConnStr)
Dim cmd As New
sqlCommand '定义一个命令对象
'Dim reader As
sqlDataReader
cmd = New
sqlCommand(cmdTxt,conn)
cmd.CommandType = cmdType
Try
'打开
数据库连线
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
'执行命令
'reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Catch ex As Exception
Msg
Box(ex.Message,"
数据库操作")
Finally
End Try
'返回一个阅读器
Return cmd.ExecuteReader(CommandBehavior.CloseConnection)
End Function
''' <summary>
'''
获取一个带参数的
查询结果阅读器
''' </summary>
''' <param name="cmdTxt">
查询的
sql语句或者存储过程
名称</param>
''' <param name="cmdType">命令类型(文本或者存储过程)</param>
''' <param name="paras">参数数组</param>
''' <returns>
查询结果</returns>
''' <remarks></remarks>
Public Shared Function GetReader(ByVal cmdTxt As String,ByVal paras As
sqlParameter()) As
sqlDataReader
Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
'定义一个
数据库连接对象
Dim conn As
sqlConnection = New
sqlConnection(strConnStr)
Dim cmd As New
sqlCommand '定义一个命令对象
cmd = New
sqlCommand(cmdTxt,conn)
cmd.CommandType = cmdType
cmd.Parameters.AddRange(paras)
'Dim reader As
sqlDataReader
Try
'打开
数据库连线
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
'执行命令
'reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Catch ex As Exception
Msg
Box(ex.Message,"
数据库操作")
Finally
End Try
'返回一个阅读器
Return cmd.ExecuteReader()
End Function
End Class