SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver、oracle、access、Mysql数据库,也是一个开源项目,提供免费下载。 SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。 SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种Imports System.Data.SqlClient Imports System.Configuration Public Class SqlHelper Dim DBConnectStr As New DALUtil Dim DBConnection As New SqlConnection(DBConnectStr.ConnectString) Dim cmd As New SqlCommand '设置连接 '定义cmd命令 Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Integer '将传入的值,分别为cmd的属性赋值 cmd.Parameters.AddRange(sqlParams) '将参数传入 cmd.CommandType = cmdType '设置一个值,解释cmdText cmd.Connection = DBConnection '设置连接,全局变量 cmd.CommandText = cmdText '设置查询的语句 d Try DBConnection.Open() '打开连接 Return cmd.ExecuteNonQuery() '执行增删改操作 'cmd.Parameters.Clear() '清除参数 Catch ex As Exception Return 0 '如果出错,返回0 Finally cmd.Parameters.Clear() '清除参数 Call CloseConn(DBConnection) Call CloseCmd(cmd) End Try End Function Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer '为要执行的命令cmd赋值 cmd.CommandText = cmdText '先是查询的sql语句 cmd.CommandType = cmdType '设置Sql语句如何解释 cmd.Connection = DBConnection '设置连接 '执行操作 Try DBConnection.Open() Return cmd.ExecuteNonQuery() Catch ex As Exception Return 0 Finally Call CloseConn(DBConnection) Call CloseCmd(cmd) End Try End Function Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable '执行查询操作,有参数 Dim adapter As SqlDataAdapter '是 DataSet和 SQL Server之间的桥接器,用于检索和保存数据。 'SqlDataAdapter通过对数据源使用适当的Transact-SQL语句映射 Fill(它可填充DataSet中的数据以匹配数据源中的数据) '和 Update(它可更改数据源中的数据以匹配 DataSet中的数据)来提供这一桥接。当SqlDataAdapter填充 DataSet时 ',它为返回的数据创建必需的表和列(如果这些表和列尚不存在)。 Dim dt As New DataTable Dim ds As New DataSet '它是从数据源中检索到的数据在内存中的缓存。DataSet支持多表、表间关系、数据约束等,和关系数据库的模型基本一致 cmd.CommandText = cmdText cmd.CommandType = cmdType cmd.Connection = DBConnection cmd.Parameters.AddRange(sqlParams) '添加条件传参数这样比较安全 adapter = New SqlDataAdapter(cmd) ' ' Try adapter.Fill(ds) '填充DataSet中的数据以匹配数据源中的数据 dt = ds.Tables(0) '就是Fill(DataSet ds,Tables tablesName),可见, '它需要两个参数,第一个参数是DataSet对象,第二参数是“表名”对象(这个表名是自己给命名的), '第一个参数不可省略,而第二个参数如果省略的话,电脑默认把这个表从零“0”开始储存,即有了ds.Tables[0] cmd.Parameters.Clear() '参数清零 'Catch ex As Exception ' Throw New Exception("查询失败!") ' Finally Call CloseCmd(cmd) '关闭命令 ' End Try Return dt End Function Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable '执行查询操作,无参数 Dim adapter As SqlDataAdapter Dim ds As New DataSet cmd.CommandText = cmdText cmd.CommandType = cmdType cmd.Connection = DBConnection adapter = New SqlDataAdapter(cmd) Try adapter.Fill(ds) Return ds.Tables(0) Catch ex As Exception Return Nothing Finally 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 Sub End Class
方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。
SqlHelper的用法
最新推荐文章于 2024-08-29 10:36:39 发布