现在的位置: 首页 > 综合 > 正文

SqlHelper(二)

2013年03月27日 ⁄ 综合 ⁄ 共 4927字 ⁄ 字号 评论关闭
一 数据连接

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语句,和相关的表名

通过参数传递进去即可,这样将大大减少数据库操作方面的工作量。

抱歉!评论已关闭.