什么是sqlhelper
sqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。sqlHelper用于简化你重复的去写那些数据库连接(sqlConnection),sqlCommand,sqlDataReader等等。sqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,sql参数等,就可以访问数据库了,很方便。
为什么要用sqlhelper
简单的说就是简化操作,提高效率。
我们都知道D层用于执行与数据库有关的操作。每当执行与数据库有关的操作时,就需要执行一遍数据库操作的语言,然后对其进行增、删、改、查,这时就会出现很多重复或者说类似的代码,会出现冗余,也容易产生错误。
为了提高效率,我们把这些数据库操作语言封装成一个类,再对其进行操作。既使D层减负,也使代码减少耦合,程序的执行更加高效。
怎么用sqlhelper
(一)基本介绍
1.数据库操作包括增删改查4类,简单点,可以划分成两类:查询(查)、更新(增删改)。
(1)带参数的更新(增删改)语句或存储过程 ---------------返回受影响行数
(2)不带参数的更新(增删改)语句或存储过程 ---------------返回受影响行数
(3)带参数的查询语句或存储过程 ---------------返回结果集
(4)不带参数的查询语句或存储过程 ---------------返回结果集
(二)内容详解
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>
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 MsgBox(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 MsgBox(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 MsgBox(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 MsgBox(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 MsgBox(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 MsgBox(ex.Message,"数据库操作") Finally End Try '返回一个阅读器 Return cmd.ExecuteReader() End Function End Class原文链接:https://www.f2er.com/vb/256804.html