在开发中通过总结自己编写了一个关于数据操作的公共类,在实际操作中觉得使用起来非常方便。
实现在module中定义。使用时直接调用即可
这里数据连接采用sqlConnection
一 数据连接
Public sqlconn As SqlClient.SqlConnection '全局变量,供整个应用程序使用
Sub open_conn()
Dim sqlconnStr As String
Try
sqlconnStr = "workstation id=" + DbHost + ";packet size=4096;data source = " sqlserver主机 " ;persist security info=true;initial catalog = dbName; user id = userName; password =userPwd sqlconn = New SqlClient.SqlConnection(sqlconnStr)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
' MsgBox("数据库连接准备完成")
End Sub
二 日志记录类
'系统日志类
'该类供应用各个模块调用,记录用户的登陆,退出,对数据库的操作,以及运行过程中系统的异常的记录。
'该类的成员变量为结构体loginfo的一个实例
Public Class cLogWrite
Private myLogInfo As New logInfo ’定义的一个结构体类型的公共变量,包含用户,日志类型,主机,和日‘志内容
Public Sub setUserId(ByVal myId As String)
myLogInfo.user_id = myId
End Sub
Public Sub setLogType(ByVal myType As String)
myLogInfo.log_type = myType
End Sub
Public Sub setLogContent(ByVal myContent As String)
myLogInfo.log_content = myContent
End Sub
Public Sub setLogMachine()
myLogInfo.log_machine = System.Net.Dns.GetHostName
End Sub
Public Sub insertLog()
Dim mysqlcomm As SqlClient.SqlCommand
Dim mysql As String
mysql = "insert into wjb_log(log_datetime,log_type,user_id,log_content,log_machine) values (current_timestamp,'" + myLogInfo.log_type + "','" + myLogInfo.user_id + "','" + myLogInfo.log_content + "','" + myLogInfo.log_machine + "')"
Try
sqlconn.Open()
mysqlcomm = New SqlClient.SqlCommand(mysql, sqlconn)
mysqlcomm.ExecuteNonQuery()
sqlconn.Close()
Catch ex As Exception
If sqlconn.State.Open = 1 Then
sqlconn.Close()
End If
Throw ex
Exit Sub
End Try
End Sub
End Class
三 数据库操作
'该类为数据处理类,定义了所有对数据库的操作
'该类为所有功能模块提供对数据库数据的操作接口,select、insert、update、delete
Public Class cDataProcess
'该方法为各功能模块 查询数据库中的数据提供结果集,输入select sql语句,和操作的数据库表,返回相应表的结果集
Dim myLogWrite As New cLogWrite
Public Function dataSelect(ByVal strSql As String, ByVal strTableName As String) As DataSet
Dim mydataset As New DataSet
Dim mySqlAdapter As SqlClient.SqlDataAdapter
Try
sqlconn.Open()
mySqlAdapter = New SqlClient.SqlDataAdapter(strSql, sqlconn)
mySqlAdapter.Fill(mydataset, strTableName)
sqlconn.Close()
mySqlAdapter = Nothing
'该处记录查询的日志信息,日志类型为:用户操作,用户内容包括查询语句,查询的表
'myLogWrite.setLogType("用户操作")
'myLogWrite.setUserId(userStruc.userid)
'myLogWrite.setLogMachine()
'myLogWrite.setLogContent("用户通过 " + strSql + " 查询表 " + strTableName)
'myLogWrite.insertLog()
Catch ex As Exception
sqlconn.Close()
'该处记录日志信息,日志类型为操作异常
myLogWrite.setLogType("系统异常")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("" + ex.Message) '"用户查询表 " + strTableName + " 时发生异常:
myLogWrite.insertLog()
Throw ex
End Try
Return mydataset
End Function
'该方法为各功能模块提供插入数据操作,参数为:insert语句和表名
Public Sub dataInsert(ByVal strSql As String, ByVal strTableName As String)
Dim mysqlcomm As SqlClient.SqlCommand
Try
sqlconn.Open()
mysqlcomm = New SqlClient.SqlCommand(strSql, sqlconn)
mysqlcomm.ExecuteNonQuery()
sqlconn.Close()
mysqlcomm = Nothing
'该处记录日志信息,日志类型为:用户操作,用户内容包括insert语句,操作的表
myLogWrite.setLogType("用户操作")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("用户向表 " + strTableName + " 中插入数据")
myLogWrite.insertLog()
Catch ex As Exception
If sqlconn.State.Open = 1 Then
sqlconn.Close()
End If
'该处记录日志信息,日志类型为操作异常
myLogWrite.setLogType("系统异常")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("" + escapeZifu(ex.Message, "'")) '用户向表 " + strTableName + " 中插入数据时发生异常:
myLogWrite.insertLog()
Throw ex
End Try
End Sub
'该方法为各功能模块提供修改数据操作,参数为:update语句和表名
Public Sub dataUpdate(ByVal strSql As String, ByVal strTableName As String)
Dim mysqlcomm As SqlClient.SqlCommand
Try
sqlconn.Open()
mysqlcomm = New SqlClient.SqlCommand(strSql, sqlconn)
mysqlcomm.ExecuteNonQuery()
sqlconn.Close()
mysqlcomm = Nothing
'该处记录日志信息,日志类型为:用户操作,用户内容包括insert语句,操作的表
myLogWrite.setLogType("用户操作")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("用户更改表 " + strTableName + "的记录")
myLogWrite.insertLog()
Catch ex As Exception
If sqlconn.State.Open = 1 Then
sqlconn.Close()
End If
'该处记录日志信息,日志类型为操作异常
myLogWrite.setLogType("系统异常")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("" + escapeZifu(ex.Message, "'")) '用户更改表 " + strTableName + " 中记录时发生异常:
myLogWrite.insertLog()
Throw ex
End Try
End Sub
'该类为各功能模块提供删除数据的操作,参数为delete语句,和要删除的表
Public Sub dataDelete(ByVal strSql As String, ByVal strTableName As String)
Dim mysqlcomm As SqlClient.SqlCommand
Try
sqlconn.Open()
mysqlcomm = New SqlClient.SqlCommand(strSql, sqlconn)
mysqlcomm.ExecuteNonQuery()
sqlconn.Close()
mysqlcomm = Nothing
'该处记录日志信息,日志类型为:用户操作,用户内容包括insert语句,操作的表
myLogWrite.setLogType("用户操作")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("用户删除表 " + strTableName + "中的记录")
myLogWrite.insertLog()
Catch ex As Exception
If sqlconn.State.Open = 1 Then
sqlconn.Close()
End If
'该处记录日志信息,日志类型为操作异常
myLogWrite.setLogType("系统异常")
myLogWrite.setUserId(userStruc.userid)
myLogWrite.setLogMachine()
myLogWrite.setLogContent("" + escapeZifu(ex.Message, "'")) '用户删除表 " + strTableName + " 中记录时发生异常:
myLogWrite.insertLog()
Throw ex
End Try
End Sub
'该函数目的去掉字符串中的符号
Public Function escapeZifu(ByVal str As String, ByVal zifu As String) As String
Dim istart As Int32
istart = str.Trim.IndexOf(zifu)
While istart <> -1
str = str.Substring(0, istart) + str.Substring(istart + 1, str.Length - istart - 1)
istart = str.IndexOf(zifu)
End While
Return str
End Function
End Class
四 调用方法
自己构造sql语句,和相关的表名
通过参数传递进去即可,这样将大大减少数据库操作方面的工作量。