标签:
机房收费系统个人重构版敲完登陆系统之后往后敲了几个窗口,对于那些数据库连接SqlConnenction、SqlConnamd等常常敲反复的代码,之前也看过其它人的博客,这个东西不用还真不行。
SqlHelper是什么?
SqlHelper是一个基于·NETFramework的数据库操作组件。组件中包括数据库操作方法。
SqlHelper的作用?
SqlHelper用于简化你反复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper封装过后一般是仅仅须要给方法传入一些參数如数据库连接字符串,SQL參数等。就能够訪问数据库了。
机房个人重构Sqlhelper代码:
’**************************************************** ’文件名称:SqlHelper ’命名空间:DAL '内容:使用SqlHelper,提供较高的数据訪问性 ’功能: ’文件关系: ’作者:赵亚盟 ’小组:XXX ’生成日期:2014-07-17 14:44:38 ’版本号号:V1.0.0.0 ’改动日志: ’版本号说明: '**************************************************** Imports System.Data Imports System.Data.SqlClient 'SQLServer的连接对象 Imports System.Configuration '配置文件的引用 (管理器中也要引用) '------------------------------------------------------------------------------------------------------------------------------------------------------------------ Public Class SqlHelper Dim Connstr As String = ConfigurationManager.AppSettings("Connstr") '配置文件 Dim conn As New SqlConnection '定义连接 Dim cmd As New SqlCommand '定义命令 Public Sub New() conn = New SqlConnection(Connstr) End Sub #Region "有參数的查询操作" ''' <summary> '''运行查询操作。有參数返回datatable类型 ''' </summary> ''' <param name="cmdText">须要运行语句。能够是Sql语句也能够是存储过程</param> ''' <param name="cmdType">推断Sql语句的类型,一般都不是存储过程</param> ''' <param name="paras">參数数组</param> ''' <returns>返回表</returns> ''' <remarks></remarks> Public Function GetDataTable(cmdText As String, cmdType As String, paras As SqlParameter()) As DataTable Dim adapter As New SqlDataAdapter Dim ds As New DataSet '定义一个适配器对象 Dim dt As New DataTable cmd.CommandText = cmdText '设置查询语句 cmd.CommandType = cmdType cmd.Connection = conn '设置连接,全局变量 cmd.Parameters.AddRange(paras) '传入參数 adapter = New SqlDataAdapter(cmd) '实例化Adapter Try adapter.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 CloseConn(conn) Call CloseCmd(cmd) '销毁cmd End Try Return dt '返回受影响的行数 End Function #End Region '------------------------------------------------------------------------------------------------------------------------------------------------------------------------ #Region "无參数的查询操作" ''' <summary> '''运行查询操作。无參数返回datatable类型 ''' </summary> ''' <param name="cmdText">须要运行语句,能够是Sql语句也能够是存储过程</param> ''' <param name="cmdType">推断Sql语句的类型,一般都不是存储过程</param> ''' <returns>返回表</returns> ''' <remarks></remarks> Public Function GetDataTable(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable Dim adapter As New SqlDataAdapter Dim ds As New DataSet '定义一个适配器对象 Dim dt As New DataTable cmd.CommandText = cmdText '将sql语句传给cmdsql cmd.CommandType = cmdType '确定语句类型 cmd.Connection = conn '设置连接,全局变量 adapter = New SqlDataAdapter(cmd) '实例化Adapter Try adapter.Fill(ds) '用Adapter将Dataset填充 dt = ds.Tables(0) 'datatable为DataSet的第一个表 Catch ex As Exception MsgBox("查询失败", CType(vbOKOnly + MsgBoxStyle.Exclamation, MsgBoxStyle), "警告") Finally '销毁cmd Call CloseConn(conn) Call CloseCmd(cmd) End Try Return dt '返回受影响的行数 End Function #End Region '---------------------------------------------------------------------------------------------------------------------------------------------------------------------- #Region "有參数的增删改" ''' <summary> ''' ///运行有參数的增删改操作,有參数则返回Boolean类型,确认是否运行成功 ''' </summary> ''' <param name="cmdText">须要运行语句。能够是Sql语句也能够是存储过程</param> ''' <param name="cmdType">推断Sql语句的类型。一般都不是存储过程</param> ''' <param name="paras">參数数组</param> ''' <returns>返回Boolean类型。成功返回true,否则返回false</returns> ''' <remarks></remarks> Public Function ExecuteNoQuery(cmdText As String, cmdType As CommandType, paras As SqlParameter()) As Boolean cmd.Parameters.AddRange(paras) '传入參数 cmd.CommandType = cmdType '确定语句类型 cmd.CommandText = cmdText '设置查询语句 cmd.Connection = conn '设置连接。全局变量 Try conn.Open() '打开连接 Return cmd.ExecuteNonQuery() '运行增删改操作 cmd.Parameters.Clear() '清除參数 Catch ex As Exception Return False '假设出现错误,则返回false Finally '关闭数据库 Call CloseConn(conn) Call CloseCmd(cmd) End Try End Function #End Region '------------------------------------------------------------------------------------------------------------------------------------------------------------------------ #Region "无參数的增删改" ''' <summary> ''' ///运行增删改操作,无參返回Boolean型。确认是否运行成功 ''' </summary> ''' <param name="cmdText">须要运行语句。能够是Sql语句也能够是存储过程</param> ''' <param name="cmdType">推断Sql语句的类型,一般都不是存储过程</param> ''' <returns>返回Boolean类型,成功返回true,否则返回false</returns> ''' <remarks></remarks> Public Function ExecuteNoQuery(cmdText As String, cmdType As CommandType) As Boolean cmd.CommandType = cmdType '推断类型 cmd.CommandText = cmdText '设置查询语句 cmd.Connection = conn '设置连接 Try conn.Open() '打开连接 Return cmd.ExecuteNonQuery() '运行增删改操作 Catch ex As Exception Return False '假设出现错误,则返回false Finally '关闭数据库 Call CloseConn(conn) Call CloseCmd(cmd) End Try End Function #End Region Public Sub CloseCmd(ByVal cmd As SqlCommand) '推断cmd命令是否存在。假设cmd命令不存在就销毁 If Not IsNothing(cmd) Then cmd.Dispose() cmd = Nothing End If End Sub Public Sub CloseConn(ByVal conn As SqlConnection) '推断数据库连接对象状态是否是断开状态,,假设不是就断开 If conn.State <> ConnectionState.Closed Then conn.Close() '关闭连接 End If End Sub End Class
在 SqlHelper 类中实现的方法包含:
ExecuteNonQuery。用于运行(有參数或无參数的)不返回不论什么行或值的命令。这些命令通经常使用于运行数据库(增\删\改)更新,但也可用于返回存储过程的输出參数。
ExecuteReader。此方法用于返回 SqlDataReader 对象,该对象包括由某一命令返回的结果集。
ExecuteDataset。此方法返回DataSet 对象,该对象包括由某一命令返回的结果集。
注意:在使用SqlHelper方法调用数据库存储过程时。须要获取存储过程的返回值。使用带有SSqlParameter[]參数的方法,Object[]參数的方法无法获取存储过程的返回值。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
标签:
原文地址:http://www.cnblogs.com/hrhguanli/p/4726308.html