重构之SqlHelper类
来源:互联网 发布:信阳师范网络教学平台 编辑:程序博客网 时间:2024/05/17 22:47
前言
在网上看大家的博客,发现好多人在用SqlHelper类,怀着人云亦云的态度,我也就稀里糊涂的用了。好多人都说,使用SqlHelper类是为了减少使用重复的代码,我想了想也是,要是你写100个功能那你还在D层写100个增删改查的方法嘛,于是为了方便就使用SqlHelper类了。我在没有经过自己的思考就站在巨人的肩膀上,这样虽然没有走过多少弯路,但是得到的也就会相应的少了。过程
刚开始的时候以为SqlHelper类中的代码都是一样的,都跟登录时用到的一样,但是敲修改密码窗体的时候,出了Bug,返回的表为空,于是乎就是问了明慧,明慧一句话点醒了我,SqlHelper类有4种,分为有无参数的增删改和有无参数的查询。第一次机房的时候就没有很理解增删改查,欠下的终究是要还的,这次想好好理解理解,和晓静师傅谈论过一番之后,觉得也明白了点东西。首先区分带参数和不带参数的区别。带参数就是查询一个表或数据时需要一个字段或实体的指引,假如你想查张三的成绩,这时候你得通过张三这个姓名找他的成绩,这时候就是带参数的查询,反之就是不带参数的查询。带参数和不带参数的增删改查亦是如此。SqlHelper类的代码还是比较好理解的。
Imports System.DataImports System.ConfigurationImports System.Data.SqlClientPublic Class SqlHelper '定义变量,获得数据库连接字符串 Dim str As String = System.Configuration.ConfigurationSettings.AppSettings("db") '设置连接 Dim conn As SqlConnection = New SqlConnection(str) '定义command命令 Dim cmd As New SqlCommand '执行查询操作(有参),参数不限 Public Function ExecSelect(ByVal cmdText As String, cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable Dim adp As New SqlDataAdapter '是DataSet和SQL server之间的桥接器,用于检索和保存数据 Dim dt As New DataTable Dim ds As New DataSet '将传入的值,分别为cmd的属性赋值 cmd.CommandText = cmdText '设置查询语句 cmd.CommandType = cmdType '设置cmd对象的类型 cmd.Connection = conn '数据库连接语句 cmd.Parameters.AddRange(paras) '传入参数 adp = New SqlDataAdapter(cmd) '实例化适配器 Try adp.Fill(ds) '用adapter将dataset填充 dt = ds.Tables(0) 'datatable是dataset的第一个表 cmd.Parameters.Clear() '清除参数 Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告!") Finally Call CloseCmd(cmd) '释放cmd End Try Return dt '返回查询到的数据 End Function
'执行查询操作,无参 Public Function ExecSelectNo(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable Dim adp As New SqlDataAdapter 'dataset和SQL server之间的桥接器 Dim ds As New DataSet '为要执行命令的cmd赋值 cmd.CommandText = cmdText '设置sql语句 cmd.CommandType = cmdType '设置cmd对象的类型 cmd.Connection = conn '数据库连接语句 adp = New SqlDataAdapter(cmd) '实例化适配器 Try adp.Fill(ds) '用adapter将dataset填充 Return ds.Tables(0) '返回datatable的第一个表 Catch ex As Exception '遇见错误就抛出 Return Nothing Finally Call CloseCmd(cmd) '关闭cmd End Try End Function
'执行增删改三个操作,有参,返回值为Boolen类型,确认是否执行成功 Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As Integer '将传入的值,分别为cmd的属性赋值 cmd.Parameters.AddRange(paras) '将参数传入 cmd.CommandType = cmdType '设置一个值,解释cmdtext cmd.Connection = conn '设置连接,全局变量 cmd.CommandText = cmdText '设置sql语句 Try conn.Open() '打开连接 Return cmd.ExecuteNonQuery '执行增删改查操作 Catch ex As Exception Throw '如果出错就抛出 Finally cmd.Parameters.Clear() '清除参数 Call CloseConn(conn) Call CloseCmd(cmd) End Try End Function '执行增删改三个操作,无参 Public Function ExecAddDelUpdateNo(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer '为要执行的命令cmd赋值 cmd.CommandText = cmdText '传入查询语句 cmd.Connection = conn '设置连接 cmd.CommandType = cmdType '设置sql语句如何解释 '执行操作 Try conn.Open() Return cmd.ExecuteNonQuery '执行增删改查操作 Catch ex As Exception Return 0 Finally Call CloseConn(conn) Call CloseCmd(cmd) End Try End Function '关闭连接 Public Sub CloseConn(ByVal conn As SqlConnection) If (conn.State <> ConnectionState.Closed) Then '如果没有关闭 conn.Close() '关闭连接 conn = Nothing '不指向原对象 End If End Sub '关闭命令 Public Sub CloseCmd(ByVal cmd As SqlCommand) If Not IsNothing(cmd) Then '如果cmd命令还在 cmd.Dispose() '释放资源 cmd = Nothing '不指向原对象 End If End SubEnd Class
小结SqlHelper类的好处还需要慢慢去研究。
0 0
- 重构之SqlHelper类
- 机房重构 之 SqlHelper
- 机房重构之SqlHelper
- 机房重构之SqlHelper
- 个人机房重构之SqlHelper
- 机房重构之SqlHelper应用
- 【机房重构】Sqlhelper类解读
- SqlHelper初次重构
- 机房重构--sqlhelper
- SqlHelper重构
- 【机房重构】sqlHelper
- 【机房重构】SQLHelper
- SQLHelper重构
- 【机房重构】sqlhelper
- sqlhelper重构
- 机房重构--SQLHelper
- 重构SQLHelper
- 机房收费系统重构之SQLhelper的理解
- 日期选择(年月日,年月)
- 随机森林
- Balanced Lineup POJ
- js template-natice 模板
- python文件打开方式——a、a+、r+、w+
- 重构之SqlHelper类
- 数据库建表-表中列的性质
- java环境变量的配置
- 在VS中配置OPENCV的一劳永逸的方法
- 一步一步写web之初识web(二)
- <pre标签使用注意的地方
- LeetCode: 45. Jump Game II
- Python 快速入门
- 经典cnn分类网络