一 数据连接
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语句,和相关的表名
通过参数传递进去即可,这样将大大减少数据库操作方面的工作量。
SqlHelper(二)
最新推荐文章于 2024-07-20 20:04:43 发布