2023年6月21日发(作者:)

事务实例 代码事务是并发控制的单位。是⽤户定义的⼀个操作序列,这些操作要么都做,要么⼀个也不做,不可分割的⼯作单位。 通过事务,SQL server能将逻辑相关的⼀些操作绑定起来,以便服务器保持数据的完整性。在SQL server和.NET的开发环境下,有两种⽅法完成事务的,⼀个是存储过程,⼀个是在中⼀个简单的事务处理下⾯以⼀个简单的存储过程中嵌套事务的操作为实例编写⼀个基本语法格式如下Create PROCEDURE [dbo].[Proc_名称] ---创建存储过程,定义⼏个变量(@Parameter1 varchar(12), @Parameter2 char(12)—定义变量)As

Begin

Begin Tran -- 开始执⾏事物 Delete from table1 where name=’abc’; Insert into table2 values(value1,value2,value3);if @@error<>0 --判断如果两条语句有任何⼀条出现错误rollback tran –开始执⾏事务的回滚,恢复的转账开始之前状态return 0endgo

else --如何两条都执⾏成功commit tran 执⾏这个事务的操作return 1endgo

下⾯具体写⼀个⼩实例进⾏详细介绍⽤上机充值为例⼦,学⽣充值卡号涉及两个表,⼀个是充值记录表,⼀个是更新学⽣信息表中的⾦额。存储过程中事物代码如下 ALTER PROCEDURE [dbo].[PROC_Recharge]

@cash char(7), @cardID char(15),@userID varchar(15),@addMoney char(7), @rechargeDate char(20),@rechargeTime char(20),@statue char(15)ASBEGIN Set NOCOUNT ON;

Set XACT_ABORT ON; begin Tran--开始事物

update T_StudentInfo set cash =@cash where cardID =@cardID --更新学⽣表的余额 insert into T_Recharge(cardID,userID,addMoney,rechargeDate,rechargeTime ,statue ) values(@cardID ,@userID ,@addMoney ,@rechargeDate ,@rechargeT

declare @RegionError int

select @RegionError =@@ERROR

if (@RegionError =0) --判断如果两条语句都执⾏成功 commit Tran --执⾏这个事务的操作 else

RoLLBACK Tran --开始执⾏事务的回滚,

END’界⾯窗体代码 Imports EntityImports BLL'''

'''充值窗体''''''PublicClassfrmRecharge

PrivateSub cmdOk_Click(senderAsObject, eAsEventArgs)Handles '变量定义 Dim enRechargeAsNewRechargeEntity Dim enStudentAsNewStudentEntity Dim workRecordAsNewWorkRecordEntity Dim '标志充值成功与否 = = ey = geDate = geTime = TimeOfDay ="未结账" = '获取⽤户名

'查询学⽣信息以及⾦额类 Dim bllStudentAsNewStudentInfoBLL '将获得的数值相加 =CLng() +CLng(tudentInfo(enStudent).Rows(0).Item(6)) '实例化充值⾦额类 Dim bllRechargeAsNewRechargeInfoBLL '获取返回的充值标志 flag = harge(enRecharge, enStudent) Try '如果返回fail为不成功,success成功,lock⾦额不够 If flag =en MsgBox("卡号不存在,请重新输⼊", vbOKOnly + vbExclamation,"提⽰") ElseIf flag =en MsgBox("充值⾦额不能少于最少⾦额 " +CommonEntity._leastCash +" 元", vbOK + vbQuestion,"提⽰") ElseIf flag =sThen '显⽰充值信息 ("充值⽼师:" + ) ("充值卡号:" + ) ("充值⾦额:" + ey) ("卡总共⾦额:" + ) ("充值⽇期:" + geDate) MsgBox("充值成功", vbOK + vbInformation,"提⽰") EndIf Catch exAsException EndTry EndSubEndClass

B层主要操作逻辑业务的代码如下

PublicClassRechargeInfoBLL '''

'''增加充值记录⽅法,并修改学⽣余额 ''' ''' ''' ''' ''' PublicFunction AddRecharge(enRechargeAsRechargeEntity, enStudentAsStudentEntity)AsInteger Dim iRechargeAsIRecharge Dim iStudnetAsIStudent Dim stundentAsNewDataTable Dim iDataBaseAsIDataBase Dim dataBaseAsNewDataTable Dim lestMoneyAsInteger iStudnet =Student() '实现⼯⼚创建实例 Try '调⽤接⼝⽅法 '如果没有此学⽣返回fail,若充值⾦额少于最少⾦额返回lock,成功返回success stundent = tudent(enStudent) If = 0Then '如果⾦额⼩于最少⾦额,锁定,否则充值成功 ElseIf > 0Then iDataBase = DataBase() dataBase = ataBase() lestMoney = (0).Item(5) If ey < lestMoneyThen Else iRecharge = Recharge() dRecharge(enRecharge, enStudent) s EndIf EndIf Catch exAsException Throw ex EndTryEndFunctionEnd Class

D层主要实现接⼝层⽅法

Imports EntityImports SqlHelperImports [Interface]Imports ent

PublicClassSqlRechargeDAL Implements [Interface].IRecharge '''

'''增加充值信息⽅法 ''' '''参数实体类 '''参数实体类 '''返回类型Boolean ''' PublicFunction AddCardRecharge(enRechargeAsRechargeEntity,enStudentAsStudentEntity)dRecharge Dim sqlHelpareAsNew per Dim stroSQLAsString Dim sqlParmaeterAsSqlParameter() '定义参数集合 sqlParmaeter =NewSqlParameter() { NewSqlParameter("@cash", ), NewSqlParameter("@cardID", ), NewSqlParameter("@userID", ), NewSqlParameter("@addMoney", ey), NewSqlParameter("@rechargeDate", geDate), NewSqlParameter("@rechargeTime", geTime), NewSqlParameter("@statue", ) } '存储过程名 stroSQL ="PROC_Recharge" Try '执⾏带参数的存储过程 Return eNoQuery(stroSQL,Procedure, sqlParmaeter) Catch exAsException Throw ex EndTryEndFunctionEnd class

接⼝层代码

Imports Entity'类名: IRecharge'作者: 韩艳坤'说明:IRecharge数据表接⼝'创建⽇期:2013年3⽉10⽇'**********************************************/PublicInterfaceIRecharge '''

'''增加学⽣充值⽅法 ''' '''参数实体类 '''参数实体 '''返回值Boolean类型 ''' Function AddCardRecharge(ByVal enRechargeAsRechargeEntity,ByValenStudentAsStudentEntity)AsBooleanEnd Interface

实体层 主要是获取数据库的字段 。这⾥就不再详细编写

对于Sqlhelper层的代码如下

Imports entImports urationImports ports tions

PublicClasssqlHelper '定义变量 '获得数据库连接字符 PrivateReadOnly strConnectionAsString =tings("strConnection") '定义连接 Dim connAsSqlConnection =NewSqlConnection(strConnection) '定义连接命令 Dim comdAsNewSqlCommand

'''

'''执⾏增删改三个操作,(有参)返回值为boolean类型,确认是否成功 ''' '''需要执⾏的语句,⼀般是Sql语句,也有存储过程 '''命令类型(存储过程, T-SQL语句, 等等) '''参数数组,⽆法确认有多少个参数 '''返回布尔类型,成功为true,否则为false ''' PublicFunction ExecuteNoQuery(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByVal sqlParamsAsSqlParameter())AsBoolean ge(sqlParams)'传⼊参数 dType = cmdType'传⼊语句类型 tion = conn'设置连接 dText = strSql'设置查询语句

Try ()'打开连接 Return eNonQuery()'执⾏增删改语句 ()'清楚原有参数

Catch exAsException ReturnFalse'如果出错,返回false提⽰ Finally '判断数据库连接对象是否为断开状态,如果为连接则断开 '判断数据库操作命令是否存在,若存在则销毁 If =en () EndIf CloseCommand(comd)

EndTry

EndFunction '''

'''⾏增删改三个操作,(⽆参)返回值为boolean类型,确认是否成功 ''' '''需要执⾏的语句,可能是⼀般语句,也可能是存储过程 '''命令类型(存储过程, T-SQL语句, 等等 '''返回布尔类型,成功为true,否则为false ''' PublicFunction ExecuteNoQuery(ByVal strSql AsString,ByVal cmdTypeAsCommandType)AsBoolean dType = cmdType tion = conn dText = strSql

Try

()'打开数据连接 Return eNonQuery()'返回执⾏增删改结果,受影响的⾏数

Catch exAsException ReturnFalse'错误时扔出false信息 Finally '判断数据库连接对象是否为断开状态,如果为连接则断开 '判断数据库操作命令是否存在,若存在则销毁 CloseCommand(comd) Call CloseConn() EndTry EndFunction '''

'''查询操作,(有参数),返回⼀个查询的信息表 ''' '''执⾏语句,可能是单个sql语句,也可能是⼀个存储过程 '''命令类型(存储过程, T-SQL语句, 等等 '''参数数组,不确定参数个数 '''返回类型 ⼀个datatable表 ''' PublicFunction ExecuteSelect(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByVal sqlParmarsAsSqlParameter())AsDataTable Dim sqlAdapterAsSqlDataAdapter'定义数据适配器 Dim dtSQlAsNewDataTable'定义datatable表存储数据 Dim dsSQLAsNewDataSet '定义dataset本地缓存数据 'ge(sqlParmars) '传⼊参数 '参数传递填充comd对象 dType = cmdType dText = strSql tion = conn ge(sqlParmars)'添加参数 sqlAdapter =NewSqlDataAdapter(comd)'实例化adapter

Try

(dsSQL)'填充dataset dtSQl = (0)'datatable为dataset的第⼀个表 ()'清除参数 Catch exAsException MsgBox("查询失败",CType(vbOKOnly +ation,MsgBoxStyle)) Finally CloseCommand(comd)'销毁命令 Call CloseConn()'销毁语句

EndTry Return dtSQl'返回查询结果 EndFunction '''

'''查询操作,(⽆参数),返回⼀个查询的信息表 ''' '''执⾏语句,可能为单条sql语句,也可能是⼀个存储过程 '''命令类型(存储过程 ,T-SQL语句等) '''返回datatable表 ''' PublicFunction ExecuteSelect(ByVal strSql AsString,ByVal cmdTypeAsCommandType)AsDataTable Dim dtSQLAsNewDataTable'定义查询表 Dim dsSQLAsNewDataSet '定义数据缓存器 Dim sqlAdapterAsSqlDataAdapter'定义数据适配器 '参数传递填充comd对象 dType = cmdType comd =NewSqlCommand(strSql, conn) sqlAdapter =NewSqlDataAdapter(comd)'实例化数据适配器,读取数据 Try (dsSQL)'填充dataset缓冲池 dtSQL = (0)'datatable为dataset的第⼀个表 Catch exAsException Finally CloseCommand(comd)'销毁命令 Call CloseConn()'销毁语句

EndTry Return dtSQL'返回值 ,datatable类型 EndFunction '''

'''查询操作,有参数,返回⼀个dataSet ''' '''执⾏语句,可以是⼀个sql语句或⼀个存储过程 '''命令类型(存储过程 ,T-SQL语句等) '''参数集,不知道有多少个参数 '''返回类型DataSet ''' PublicFunction ExecuteQuery(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByVal sqlParamtersAsSqlParameter()) Dim dsSQLAsNewDataSet Dim sqlAdapaterAsSqlDataAdapter'定义数据适配器 ge(sqlParamters)'传⼊参数 dType = cmdType'定义执⾏语句类型 comd =NewSqlCommand(strSql, conn)'执⾏连接语句 sqlAdapater =NewSqlDataAdapter(comd)'实例化数据适配器,进⾏读取数据 Try (dsSQL)'填充dataset数据缓冲池 ()'清楚参数 Return dsSQL Catch exAsException Throw ex Finally '关闭连接字符和命令 CloseCommand(comd) Call CloseConn() EndTry

EndFunction '''

'''销毁数据库命令 ''' ''' PrivateSub CloseCommand(ByVal comd AsSqlCommand) '判断数据库操作命令是否存在,若存在则销毁

e()'销毁命令 comd =Nothing

EndSub

'''

未⽤到此⽅法 '''获取⼀个带参数产寻结果的读取器 ''' '''执⾏语句,可能为单条sql语句,也可能是⼀个存储过程 '''命令类型(存储过程 ,T-SQL语句等) '''参数,不知道有多少个参数 '''返回⼀个个查询结果 ''' PublicFunction ExecuteReader(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByValsqlParamarsAsSqlParameter())AsSqlDataReader dType = cmdType comd =NewSqlCommand(strSql, conn)'执⾏数据库命令和连接字符 ge(sqlParamars)'添加参数 Try ()'打开数据连接 Return eReader() ()'清楚参数 Catch exAsException MsgBox("获取失败",ation) Finally 'Call CloseConn() 'Call CloseCommand() '销毁命令 EndTry '返回⼀个读取结果 Return eReader(onnection) EndFunction ''' '''关闭连接字符 ''' ''' PrivateSub CloseConn() '判断数据库连接对象是否为断开状态,如果为连接则断开 If <>Then () EndIf EndSubEndClass

2023年6月21日发(作者:)

事务实例 代码事务是并发控制的单位。是⽤户定义的⼀个操作序列,这些操作要么都做,要么⼀个也不做,不可分割的⼯作单位。 通过事务,SQL server能将逻辑相关的⼀些操作绑定起来,以便服务器保持数据的完整性。在SQL server和.NET的开发环境下,有两种⽅法完成事务的,⼀个是存储过程,⼀个是在中⼀个简单的事务处理下⾯以⼀个简单的存储过程中嵌套事务的操作为实例编写⼀个基本语法格式如下Create PROCEDURE [dbo].[Proc_名称] ---创建存储过程,定义⼏个变量(@Parameter1 varchar(12), @Parameter2 char(12)—定义变量)As

Begin

Begin Tran -- 开始执⾏事物 Delete from table1 where name=’abc’; Insert into table2 values(value1,value2,value3);if @@error<>0 --判断如果两条语句有任何⼀条出现错误rollback tran –开始执⾏事务的回滚,恢复的转账开始之前状态return 0endgo

else --如何两条都执⾏成功commit tran 执⾏这个事务的操作return 1endgo

下⾯具体写⼀个⼩实例进⾏详细介绍⽤上机充值为例⼦,学⽣充值卡号涉及两个表,⼀个是充值记录表,⼀个是更新学⽣信息表中的⾦额。存储过程中事物代码如下 ALTER PROCEDURE [dbo].[PROC_Recharge]

@cash char(7), @cardID char(15),@userID varchar(15),@addMoney char(7), @rechargeDate char(20),@rechargeTime char(20),@statue char(15)ASBEGIN Set NOCOUNT ON;

Set XACT_ABORT ON; begin Tran--开始事物

update T_StudentInfo set cash =@cash where cardID =@cardID --更新学⽣表的余额 insert into T_Recharge(cardID,userID,addMoney,rechargeDate,rechargeTime ,statue ) values(@cardID ,@userID ,@addMoney ,@rechargeDate ,@rechargeT

declare @RegionError int

select @RegionError =@@ERROR

if (@RegionError =0) --判断如果两条语句都执⾏成功 commit Tran --执⾏这个事务的操作 else

RoLLBACK Tran --开始执⾏事务的回滚,

END’界⾯窗体代码 Imports EntityImports BLL'''

'''充值窗体''''''PublicClassfrmRecharge

PrivateSub cmdOk_Click(senderAsObject, eAsEventArgs)Handles '变量定义 Dim enRechargeAsNewRechargeEntity Dim enStudentAsNewStudentEntity Dim workRecordAsNewWorkRecordEntity Dim '标志充值成功与否 = = ey = geDate = geTime = TimeOfDay ="未结账" = '获取⽤户名

'查询学⽣信息以及⾦额类 Dim bllStudentAsNewStudentInfoBLL '将获得的数值相加 =CLng() +CLng(tudentInfo(enStudent).Rows(0).Item(6)) '实例化充值⾦额类 Dim bllRechargeAsNewRechargeInfoBLL '获取返回的充值标志 flag = harge(enRecharge, enStudent) Try '如果返回fail为不成功,success成功,lock⾦额不够 If flag =en MsgBox("卡号不存在,请重新输⼊", vbOKOnly + vbExclamation,"提⽰") ElseIf flag =en MsgBox("充值⾦额不能少于最少⾦额 " +CommonEntity._leastCash +" 元", vbOK + vbQuestion,"提⽰") ElseIf flag =sThen '显⽰充值信息 ("充值⽼师:" + ) ("充值卡号:" + ) ("充值⾦额:" + ey) ("卡总共⾦额:" + ) ("充值⽇期:" + geDate) MsgBox("充值成功", vbOK + vbInformation,"提⽰") EndIf Catch exAsException EndTry EndSubEndClass

B层主要操作逻辑业务的代码如下

PublicClassRechargeInfoBLL '''

'''增加充值记录⽅法,并修改学⽣余额 ''' ''' ''' ''' ''' PublicFunction AddRecharge(enRechargeAsRechargeEntity, enStudentAsStudentEntity)AsInteger Dim iRechargeAsIRecharge Dim iStudnetAsIStudent Dim stundentAsNewDataTable Dim iDataBaseAsIDataBase Dim dataBaseAsNewDataTable Dim lestMoneyAsInteger iStudnet =Student() '实现⼯⼚创建实例 Try '调⽤接⼝⽅法 '如果没有此学⽣返回fail,若充值⾦额少于最少⾦额返回lock,成功返回success stundent = tudent(enStudent) If = 0Then '如果⾦额⼩于最少⾦额,锁定,否则充值成功 ElseIf > 0Then iDataBase = DataBase() dataBase = ataBase() lestMoney = (0).Item(5) If ey < lestMoneyThen Else iRecharge = Recharge() dRecharge(enRecharge, enStudent) s EndIf EndIf Catch exAsException Throw ex EndTryEndFunctionEnd Class

D层主要实现接⼝层⽅法

Imports EntityImports SqlHelperImports [Interface]Imports ent

PublicClassSqlRechargeDAL Implements [Interface].IRecharge '''

'''增加充值信息⽅法 ''' '''参数实体类 '''参数实体类 '''返回类型Boolean ''' PublicFunction AddCardRecharge(enRechargeAsRechargeEntity,enStudentAsStudentEntity)dRecharge Dim sqlHelpareAsNew per Dim stroSQLAsString Dim sqlParmaeterAsSqlParameter() '定义参数集合 sqlParmaeter =NewSqlParameter() { NewSqlParameter("@cash", ), NewSqlParameter("@cardID", ), NewSqlParameter("@userID", ), NewSqlParameter("@addMoney", ey), NewSqlParameter("@rechargeDate", geDate), NewSqlParameter("@rechargeTime", geTime), NewSqlParameter("@statue", ) } '存储过程名 stroSQL ="PROC_Recharge" Try '执⾏带参数的存储过程 Return eNoQuery(stroSQL,Procedure, sqlParmaeter) Catch exAsException Throw ex EndTryEndFunctionEnd class

接⼝层代码

Imports Entity'类名: IRecharge'作者: 韩艳坤'说明:IRecharge数据表接⼝'创建⽇期:2013年3⽉10⽇'**********************************************/PublicInterfaceIRecharge '''

'''增加学⽣充值⽅法 ''' '''参数实体类 '''参数实体 '''返回值Boolean类型 ''' Function AddCardRecharge(ByVal enRechargeAsRechargeEntity,ByValenStudentAsStudentEntity)AsBooleanEnd Interface

实体层 主要是获取数据库的字段 。这⾥就不再详细编写

对于Sqlhelper层的代码如下

Imports entImports urationImports ports tions

PublicClasssqlHelper '定义变量 '获得数据库连接字符 PrivateReadOnly strConnectionAsString =tings("strConnection") '定义连接 Dim connAsSqlConnection =NewSqlConnection(strConnection) '定义连接命令 Dim comdAsNewSqlCommand

'''

'''执⾏增删改三个操作,(有参)返回值为boolean类型,确认是否成功 ''' '''需要执⾏的语句,⼀般是Sql语句,也有存储过程 '''命令类型(存储过程, T-SQL语句, 等等) '''参数数组,⽆法确认有多少个参数 '''返回布尔类型,成功为true,否则为false ''' PublicFunction ExecuteNoQuery(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByVal sqlParamsAsSqlParameter())AsBoolean ge(sqlParams)'传⼊参数 dType = cmdType'传⼊语句类型 tion = conn'设置连接 dText = strSql'设置查询语句

Try ()'打开连接 Return eNonQuery()'执⾏增删改语句 ()'清楚原有参数

Catch exAsException ReturnFalse'如果出错,返回false提⽰ Finally '判断数据库连接对象是否为断开状态,如果为连接则断开 '判断数据库操作命令是否存在,若存在则销毁 If =en () EndIf CloseCommand(comd)

EndTry

EndFunction '''

'''⾏增删改三个操作,(⽆参)返回值为boolean类型,确认是否成功 ''' '''需要执⾏的语句,可能是⼀般语句,也可能是存储过程 '''命令类型(存储过程, T-SQL语句, 等等 '''返回布尔类型,成功为true,否则为false ''' PublicFunction ExecuteNoQuery(ByVal strSql AsString,ByVal cmdTypeAsCommandType)AsBoolean dType = cmdType tion = conn dText = strSql

Try

()'打开数据连接 Return eNonQuery()'返回执⾏增删改结果,受影响的⾏数

Catch exAsException ReturnFalse'错误时扔出false信息 Finally '判断数据库连接对象是否为断开状态,如果为连接则断开 '判断数据库操作命令是否存在,若存在则销毁 CloseCommand(comd) Call CloseConn() EndTry EndFunction '''

'''查询操作,(有参数),返回⼀个查询的信息表 ''' '''执⾏语句,可能是单个sql语句,也可能是⼀个存储过程 '''命令类型(存储过程, T-SQL语句, 等等 '''参数数组,不确定参数个数 '''返回类型 ⼀个datatable表 ''' PublicFunction ExecuteSelect(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByVal sqlParmarsAsSqlParameter())AsDataTable Dim sqlAdapterAsSqlDataAdapter'定义数据适配器 Dim dtSQlAsNewDataTable'定义datatable表存储数据 Dim dsSQLAsNewDataSet '定义dataset本地缓存数据 'ge(sqlParmars) '传⼊参数 '参数传递填充comd对象 dType = cmdType dText = strSql tion = conn ge(sqlParmars)'添加参数 sqlAdapter =NewSqlDataAdapter(comd)'实例化adapter

Try

(dsSQL)'填充dataset dtSQl = (0)'datatable为dataset的第⼀个表 ()'清除参数 Catch exAsException MsgBox("查询失败",CType(vbOKOnly +ation,MsgBoxStyle)) Finally CloseCommand(comd)'销毁命令 Call CloseConn()'销毁语句

EndTry Return dtSQl'返回查询结果 EndFunction '''

'''查询操作,(⽆参数),返回⼀个查询的信息表 ''' '''执⾏语句,可能为单条sql语句,也可能是⼀个存储过程 '''命令类型(存储过程 ,T-SQL语句等) '''返回datatable表 ''' PublicFunction ExecuteSelect(ByVal strSql AsString,ByVal cmdTypeAsCommandType)AsDataTable Dim dtSQLAsNewDataTable'定义查询表 Dim dsSQLAsNewDataSet '定义数据缓存器 Dim sqlAdapterAsSqlDataAdapter'定义数据适配器 '参数传递填充comd对象 dType = cmdType comd =NewSqlCommand(strSql, conn) sqlAdapter =NewSqlDataAdapter(comd)'实例化数据适配器,读取数据 Try (dsSQL)'填充dataset缓冲池 dtSQL = (0)'datatable为dataset的第⼀个表 Catch exAsException Finally CloseCommand(comd)'销毁命令 Call CloseConn()'销毁语句

EndTry Return dtSQL'返回值 ,datatable类型 EndFunction '''

'''查询操作,有参数,返回⼀个dataSet ''' '''执⾏语句,可以是⼀个sql语句或⼀个存储过程 '''命令类型(存储过程 ,T-SQL语句等) '''参数集,不知道有多少个参数 '''返回类型DataSet ''' PublicFunction ExecuteQuery(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByVal sqlParamtersAsSqlParameter()) Dim dsSQLAsNewDataSet Dim sqlAdapaterAsSqlDataAdapter'定义数据适配器 ge(sqlParamters)'传⼊参数 dType = cmdType'定义执⾏语句类型 comd =NewSqlCommand(strSql, conn)'执⾏连接语句 sqlAdapater =NewSqlDataAdapter(comd)'实例化数据适配器,进⾏读取数据 Try (dsSQL)'填充dataset数据缓冲池 ()'清楚参数 Return dsSQL Catch exAsException Throw ex Finally '关闭连接字符和命令 CloseCommand(comd) Call CloseConn() EndTry

EndFunction '''

'''销毁数据库命令 ''' ''' PrivateSub CloseCommand(ByVal comd AsSqlCommand) '判断数据库操作命令是否存在,若存在则销毁

e()'销毁命令 comd =Nothing

EndSub

'''

未⽤到此⽅法 '''获取⼀个带参数产寻结果的读取器 ''' '''执⾏语句,可能为单条sql语句,也可能是⼀个存储过程 '''命令类型(存储过程 ,T-SQL语句等) '''参数,不知道有多少个参数 '''返回⼀个个查询结果 ''' PublicFunction ExecuteReader(ByVal strSql AsString,ByVal cmdTypeAsCommandType,ByValsqlParamarsAsSqlParameter())AsSqlDataReader dType = cmdType comd =NewSqlCommand(strSql, conn)'执⾏数据库命令和连接字符 ge(sqlParamars)'添加参数 Try ()'打开数据连接 Return eReader() ()'清楚参数 Catch exAsException MsgBox("获取失败",ation) Finally 'Call CloseConn() 'Call CloseCommand() '销毁命令 EndTry '返回⼀个读取结果 Return eReader(onnection) EndFunction ''' '''关闭连接字符 ''' ''' PrivateSub CloseConn() '判断数据库连接对象是否为断开状态,如果为连接则断开 If <>Then () EndIf EndSubEndClass