【VB.NET】sqlhelper
什么是sqlhelperSqlHelper是一个基于.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>
sqlhelper类
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |