当一件事情被重复做了多次后,会想找一种办法来代替自己去做这个重复的动作。写程序也一样。
在程序中,对于重复的部分,如果是完全相同,那我们就会想着将其写成一个方法(过程、函数),放在一个具有权限的需求者都能够得着的地儿。如果需求者在同一项目中,那么就把这个方法写成一个类,如果需求者在同一类中,那么就在本类中单独建一个方法写它。将相同的东西抽象出来,供多用户调用,就是用的抽象的思想。
任何一个系统,都会涉及数据的传输、操作。而数据的操作概括起来不外乎增删改查(CURD),现在的系统随着使用者的增多,越来越多的用户操作,大数据频繁操作。如果采用原来的方式来写,复杂的系统会造成大量赘余的代码。
在类上方添加两条引用:
Imports System.Data.sqlClient '引用sql数据库连接 Imports System.Configuration '引用配置文件
Public Class sqlHelper '获取配置文件中的连接字符串 Private ReadOnly strsqlConnection As String = ConfigurationManager.AppSettings("sqlConcectStr") '定义连接 Dim connsql As sqlConnection = New sqlConnection(strsqlConnection) '定义cmd命令 Dim cmdsql As New sqlCommand ' ///<summary> ' ///depiction:<该方法是sqlhelper类的初始化> ' ///</summary> Public Sub New() connsql = New sqlConnection(strsqlConnection) End Sub '' ///<summary> '' ///depiction:<该方法是关闭数据库的连接> '' ///<summary> Private Sub ClosesqlConnection() '判断数据库连接对象状态是否为断开,如果还没有断,则断开 If connsql.State <> ConnectionState.Closed Then connsql.Close() End If End Sub ' ///<summary> ' ///depiction:<该方法是关闭数据库命令> ' ///</summary> Private Sub ClosesqlCommand() '如果命令存在,则关闭 If Not IsNothing(cmdsql) Then cmdsql.Dispose() '销毁命令 cmdsql = Nothing End If End Sub '///<summary> ''//执行增删改三个操作,(有参)返回值为Boolean类型,确认是否执行成功 '///</summary> ' ///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param> ' ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param> ' ///<returns> ' ///<返回Boolean,成功为true,否则为false> ' ///</returns> Public Function ExecuteAddDelUpdate(ByVal strsql As String,ByVal cmdType As CommandType,ByVal sqlParams As sqlParameter()) As Boolean '用传进的参数填充本类自己的cmd对象 cmdsql.Parameters.AddRange(sqlParams) '参数传入 cmdsql.CommandType = cmdType ' cmdsql.Connection = connsql '连接 cmdsql.CommandText = strsql '查询语句 Try connsql.Open() '打开连接 Return cmdsql.ExecuteNonQuery() '执行操作 cmdsql.Parameters.Clear() '清除参数 Catch ex As Exception Return False Finally Call ClosesqlConnection() '关闭连接 Call ClosesqlCommand() '结束命令 End Try End Function '///<summary> '///执行增删改三个操作,(无参)返回值为Boolean类型,确认是否执行成功 ''///</summary> '///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param> ' ///<returns> ' ///<返回Boolean类型,成功为true,否则为false> '///</returns> Public Function ExecuteAddDelUpdate(ByVal strsql As String,ByVal cmdType As CommandType) As Boolean '用传进的参数填充类自己的cmd对象 cmdsql.CommandType = cmdType '将 cmdsql.Connection = connsql '建立连接 cmdsql.CommandText = strsql '设置查询语句 Try connsql.Open() '打开连接 Return cmdsql.ExecuteNonQuery() '返回sql执行后受影响的行数 Catch ex As Exception Return False Finally Call ClosesqlConnection() '关闭连接 Call ClosesqlCommand() '结束命令 End Try End Function '///<summary> ''///执行查询操作,(有参)返回值为DataTable类型 '///</summary> ' ///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param> '' ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param> ' ///<returns> ' ///<返回表> ' ///</returns> Public Function ExecuteSelect(ByVal strsql As String,ByVal sqlParams As sqlParameter()) As DataTable Dim sqlAdapter As sqlDataAdapter Dim dtsql As New DataTable Dim dssql As New DataSet '用传进的参数填充本类自己的cmd对象 cmdsql.Parameters.AddRange(sqlParams) '传入参数 cmdsql.CommandType = cmdType cmdsql.Connection = connsql '建立连接 cmdsql.CommandText = strsql '查询语句 sqlAdapter = New sqlDataAdapter(cmdsql) '实例化Adapter Try sqlAdapter.Fill(dssql) '用Adater将DataSet填充 dtsql = dssql.Tables(0) 'DataTable为DataSet的第一个表 cmdsql.Parameters.Clear() '清除参数 Catch ex As Exception MsgBox("查询失败",CType(vbOKOnly + MsgBoxStyle.Exclamation,MsgBoxStyle),"警告") Finally Call ClosesqlCommand() End Try Return dtsql End Function '///<summary> ''//执行查询操作,(无参)返回值为DataTable类型 ''</summary> ' ///<param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param> ' ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param> ' ///<returns> ' ///<返回表> ' ///</returns> Public Function ExecuteSelect(ByVal strsql 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 = strsql cmdsql.CommandType = cmdType cmdsql.Connection = connsql sqlAdapter = New sqlDataAdapter(cmdsql) '实例化Adapter Try sqlAdapter.Fill(dssql) '用Adaper将DataSet填充 dtsql = dssql.Tables(0) 'DataTable为DataSet的第一个表 Catch ex As Exception MsgBox("查询失败","警告") Finally Call ClosesqlCommand() End Try Return dtsql End Function End Class