标签:sqlhelper framework 重构 dataset sql
在重构的时候,用到了一个很重要的数据库操作组件—SqlHelper。
SqlHelper是一个基于·NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
<span style="font-family:KaiTi_GB2312;font-size:18px;">'********************************************** '作者:马世超 '说明:创建SQLHelper '创建日期:2014年12月30日 '版本号:1.0 '********************************************** Imports System.Data.SqlClient Imports System.Configuration '在管理器中添加引用 '类名:SQLHelper '意义:用户对数据库操作帮助类 Public Class SQLHelper '获取配置文件中的连接字符串 Private ReadOnly strSQLConnection As String = ConfigurationManager.AppSettings("strSqlConnection") '定义连接 Dim cnnSQL As SqlConnection '定义cmd命令 Dim cmdSQL As New SqlCommand ' <summary> ' depiction:该方法是sqlhelper的初始化 ' </summary> Public Sub New() cnnSQL = New SqlConnection(strSQLConnection) End Sub</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ' <summary> ' depiction:该方法是关闭数据库连接 ' </summary> Private Sub closeSQLConnection() '判断数据库连接对象是否断开,如果没有断开就断开 If cnnSQL.State <> ConnectionState.Closed Then cnnSQL.Close() End If End Sub</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ' <summary> ' depiction:该方法是关闭数据库命令 ' </summary> Private Sub closeSQLCommand() If Not IsNothing(cmdSQL) Then '如果cmd命令存在 cmdSQL.Dispose() '销毁 cmdSQL = Nothing End If End Sub</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ' <summary> ' depiction:执行增删改操作,(有参数)返回boolean类型,确认是否执行成功 ' </summary> ' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> ' <param name="cmdType">判断Sql语句的类型,一般是存储过程</param> ' <param name="sqlParams">参数数组,无法确认有多少参数</param> '<returns>返回布尔类型,成功为true,否则为false</returns> Public Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Boolean '用传进的参数填充本类自己的cmd对象 cmdSQL.Connection = cnnSQL cmdSQL.CommandText = cmdText '设置查询的语句 cmdSQL.CommandType = cmdType cmdSQL.Parameters.AddRange(sqlParams) '将参数传入 Try cnnSQL.Open() '打开连接 Return cmdSQL.ExecuteNonQuery() '执行增删该操作 Catch ex As Exception Return False '如果出错,返回false Finally Call closeSQLConnection() Call closeSQLCommand() End Try End Function</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ' <summary> ' depiction:执行增删改操作,(无参数)返回boolean类型,确认是否执行成功 ' </summary> ' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> ' <param name="cmdType">判断Sql语句的类型,一般不是存储过程</param> ' <param name="sqlParams">参数数组,无法确认有多少参数</param> '<returns>返回布尔类型,成功为true,否则为false</returns> Public Function ExecuteNoQuery(ByVal cmdText As String, ByVal cmdType As CommandType) As Boolean '用传进的参数填充本类自己的cmd对象 cnnSQL.Open() cmdSQL.CommandType = cmdType cmdSQL.Connection = cnnSQL '将参数传入 cmdSQL.CommandText = cmdText '设置查询的语句 Try cnnSQL.Open() '打开连接 Return cmdSQL.ExecuteNonQuery() '执行增删改操作 Catch ex As Exception Return False '如果出错,返回false Finally Call closeSQLConnection() Call closeSQLCommand() End Try End Function</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ' <summary> ' depiction:执行查询操作,(有参数)返回datatable类型,确认是否执行成功 ' </summary> ' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> ' <param name="cmdType">判断Sql语句的类型,一般不是存储过程</param> ' <param name="sqlParams">参数数组,无法确认有多少参数</param> '<returns>返回布尔类型,成功为true,否则为false</returns> Public Function ExecuteSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable Dim sqlAdapter As SqlDataAdapter Dim dtSQL As New DataTable Dim dsSQL As New DataSet '用传进的参数填充本类自己的cmd对象 cmdSQL.CommandText = cmdText cmdSQL.CommandType = cmdType cmdSQL.Connection = cnnSQL cmdSQL.Parameters.AddRange(sqlParams) '参数添加 sqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapter Try sqlAdapter.Fill(dsSQL) '用adapter将dataset填充 dtSQL = dsSQL.Tables(0) 'datatable为dataSet的第一个表 cmdSQL.Parameters.Clear() '清楚参数 Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告") Finally Call closeSQLCommand() '销毁cmd End Try Return dtSQL End Function</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ' <summary> ' depiction:执行查询操作,(无参数)返回datatable类型,确认是否执行成功 ' </summary> ' <param name="strSql">需要执行语句,一般是Sql语句,也有存储过程</param> ' <param name="cmdType">判断Sql语句的类型,一般不是存储过程</param> '<returns>返回布尔类型,成功为true,否则为false</returns> Public Function ExecuteSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable Dim sqlAdapter As SqlDataAdapter Dim dtSQL As New DataTable Dim dsSQL As New DataSet '用传进的参数填充本类自己的cmd对象 cmdSQL.CommandText = cmdText cmdSQL.CommandType = cmdType cmdSQL.Connection = cnnSQL sqlAdapter = New SqlDataAdapter(cmdSQL) '实例化adapter Try sqlAdapter.Fill(dsSQL) '用adapter将dataSet填充 dtSQL = dsSQL.Tables(0) Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告") Finally Call closeSQLCommand() End Try Return dtSQL End Function End Class </span>
在该开始使用SqlHelper的时候,由于对SqlHelper还不了解,所以感觉好高大上。其实在做VB版机房收费系统的时候,就用到了类似SqlHelper的东西。在对数据库增删改查的时候,都调用了一个过程,来方便数据库连接。这次又遇到了,刚开始不认识,后来经过无数次的出错,无数次的对SqlHelper进行回顾,再看起来,又感觉好简单。学习东西,实践是很重要的。
标签:sqlhelper framework 重构 dataset sql
原文地址:http://blog.csdn.net/mascf/article/details/42399863