类,什么是类?让我们看看维基百科的定义
在现实世界中,经常有属于同一个类的对象。例如,某辆自行车只是世界上很多自行车中的一辆。在面向对象软件中,也有很多共享相同特征的不同的对象:矩形、雇用记录、视频剪辑等。可以利用这些对象的相同特征为它们建立一个蓝图。对象的软件蓝图称为类。
类是定义同一类所有对象的变量和方法的蓝图或原型。例如,可以建立一个定义包含当前档位等实例变量的自行车类。这个类也定义和提供了实例方法(变档、刹车)的实现。
实例变量的值由类的每个实例提供。因此,当创建自行车类以后,必须在使用之前对它进行实例化。当创建类的实例时, 就建立了这种类型的一个对象,然后系统为类定义的实例变量 分配内存。然后可以调用对象的实例方法实现一些功能。相同类的实例共享相同的实例方法。
除了实例变量和方法,类也可以定义类变量和类方法。可以从类的实例中或者直接从类中访问类变量和方法。类方法只能操 作类变量 - 不必访问实例变量或实例方法。
系统在第一次在程序中遇到一个类时为这个类建立它的所有类变量的拷贝 - 这个类的所有实例共享它的类变量。
在我们这片博文中,我们就“sqlHelper”类讲述我理解的类!首先,类的定义总有这么一句“软件蓝图称为类,sqlHelper是一个什么样的蓝图呢,大面上说,它将与数据库频繁交涉的“连接”,“执行”封装在了里面,这么说他是数据操作中“连接”,“执行”的蓝图,规划好怎么做就好!类,的好处必然有复用性,就像现在的工业时代一样,我们画好一个汽车的蓝图,汽车厂就能源源不断地给我们生产这种汽车,方便我们出行!
当然,还有一个好处是:让逻辑简单,将功能聚合起来,我们对各个方法的逻辑就变成了各个类之间的逻辑,还是汽车举个例子,如果我们每个人都造汽车,且没有标准,我们的路要修多宽?有人说“尽量宽!”,但是这是浪费,如果车子多了起来,就是混乱,类如同标准,让逻辑简单,车的大小吗,速度,油耗都有标准,让我们的路,更经济合理!
类多了涉及到分层!这是个相对的概念!什么难度的逻辑对应我们应该分几层,逻辑的多少大小,让我们在设计类,规划类的时候又用到了模式!但是模式也是个相对的概念,100%用模式解决问题,有时候就会适得其反!就比如很简单的“hello word!”我们要怎么分层,怎么运用模式都不如直接输出来的好!
面向对象,我们刚刚开始这段神奇的旅程!以后的生活会更加精彩!
源码奉献:
- Imports System.Data.sqlClient
- Imports System.Configuration '要在管理器中添加引用
- '/*************************************************
- '作者:许恕
- '小组:
- '说明:用户对数据库操作帮助类
- '创建日期:2013.2.24——14:00
- '版本号:v1.0.0
- '*********************************************/
- '类名:sqlHelper
- '意义:用户对数据库操作帮助类
- '成员:
- 'UserId '用户id
- 'UserPassword '用户密码
- 'UserName '用户姓名
- 'UserLevel '用户等级
- 'UserAgent '用户创始人
- Public Class sqlHelper
- '获取配置文件中的连接字符串
- Private ReadOnly strsqlConnection As String = ConfigurationManager.AppSettings("strsqlConnection")
- '定义连接
- Dim cnnsql As sqlConnection
- '定义cmd命令
- Dim cmdsql As sqlCommand
- ' /// <summary>
- ' /// depiction:<该方法是sqlhelper类的初始化>
- ' /// </summary>
- Private Sub New()
- cnnsql = New sqlConnection(strsqlConnection)
- End Sub
- '' /// <summary>
- '' /// depiction:<改方法是获取数据库的连接>
- '' /// </summary>
- 'Private Sub opensqlConnection()
- ' '判断数据库连接对象状态是否为断开,如果断开就打开
- ' If cnnsql.State = ConnectionState.Closed Then
- ' cnnsql.Open()
- ' End If
- 'End Sub
- ' /// <summary>
- ' /// depiction:<改方法是关闭数据库的连接>
- ' /// </summary>
- Private Sub ClosesqlConnection()
- '判断数据库连接对象状态是否为断开,如果不断开就断开
- If cnnsql.State <> ConnectionState.Closed Then
- cnnsql.Close()
- End If
- End Sub
- ' /// <summary>
- ' /// depiction:<改方法是关闭数据库命令>
- ' /// </summary>
- Private Sub ClosesqlCommand()
- If Not IsNothing(cmdsql) Then '如果cmd命令存在
- cmdsql.Dispose() '销毁
- cmdsql = Nothing
- End If
- End Sub
- '/// <summary>
- ''///执行增删改三个操作,(有参)返回值为boolean类型,确认是否执行成功
- '/// </summary>
- ' /// <param name="strsql">需要执行语句,一般是sql语句,也有存储过程</param>
- '' ///<param name="cmdType">判断sql语句的类型,一般都不是存储过程</param>
- ' /// <param name="sqlParams">参数数组,无法确认有多少参数</param>
- ' /// <returns>
- ' ///<返回布尔类型,成功为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 = cnnsql '设置连接
- cmdsql.CommandText = strsql '设置查询的语句
- Try
- cnnsql.Open() '打开连接
- Return cmdsql.ExecuteNonQuery() '执行增删改操作
- cmdsql.Parameters.Clear() '清除参数
- Catch ex As Exception
- Return False '如果出错,返回false
- Finally
- Call ClosesqlConnection()
- Call ClosesqlCommand()
- End Try
- End Function
- '/// <summary>
- ''///执行增删改三个操作,(无参)返回值为boolean类型,一般都不是存储过程</param>
- ' /// <returns>
- ' ///<返回布尔类型,成功为true,否则为false>
- ' /// </returns>
- Public Function ExecuteAddDelUpdate(ByVal strsql As String,ByVal cmdType As CommandType) As Boolean
- '用传进的参数填充本类自己的cmd对象
- cmdsql.CommandType = cmdType
- cmdsql.Connection = cnnsql '将参数传入
- cmdsql.CommandText = strsql '设置查询的语句
- Try
- cnnsql.Open() '打开连接
- Return cmdsql.ExecuteNonQuery() '执行增删改操作
- Catch ex As Exception
- Return False '如果出错,返回false
- Finally
- Call ClosesqlConnection()
- Call ClosesqlCommand()
- End Try
- End Function
- '/// <summary>
- ''///执行查询操作,(有参)返回值为datatable类型
- '/// </summary>
- ' /// <param name="strsql">需要执行语句,无法确认有多少参数</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.CommandText = strsql
- 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 '最后一定要销毁cmd
- Call ClosesqlCommand()
- End Try
- Return dtsql
- End Function
- '/// <summary>
- ''///执行查询操作,(无参)返回值为datatable类型
- '/// </summary>
- ' /// <param name="strsql">需要执行语句,一般都不是存储过程</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 = cnnsql
- sqlAdapter = New sqlDataAdapter(cmdsql) '实例化adapter
- Try
- sqlAdapter.Fill(dssql) '用adapter将dataSet填充
- dtsql = dssql.Tables(0) 'datatable为dataSet的第一个表
- Catch ex As Exception
- MsgBox("查询失败","警告")
- Finally '最后一定要销毁cmd
- Call ClosesqlCommand()
- End Try
- Return dtsql
- End Function
- End Class