求教:vb6.0与SQL数据的连接中关于代码共用的问题!
开发数据库应用系统时,每个窗体都可能编写连接数据库的代码,这样很不利于维护,一般都是在一个模块中建立数据库连接共享函数及共享连接字符串,
请问这样的数据库连接共享函数及共享连接字符串应该是怎么写?在窗体上又应该是怎么调用呢?请高手指教,
再者打包程序时怎么产生config文件呢,看见别人开发的软件,在安装好数据库和软件后要修改一下config文件,这个事怎么回事,请介绍一下,再就是怎么生成该config文件?谢谢!
[解决办法]
'在模块中定义一个全局的数据库连接对象:public g_objDBConn as new adodb.connection
[解决办法]
参考一个已经写好的:
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens() As Stringstep1: On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) Set cnn = New ADODB.Connection cnn.open "PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=" & serveraddress & ";DATABASE=newdatabase;UID=sa;PWD=123"'serveraddress 来自登陆时选择的服务器 If InStr("insert,delete,update,execute", LCase$(sTokens(0))) Then cnn.BeginTrans cnn.Execute SQL If CBool(cnn.State And adStateExecuting) Then cnn.Cancel cnn.RollbackTrans Else cnn.CommitTrans MsgString = sTokens(0) & " query successful!" End If Else Set rst = New ADODB.Recordset rst.CursorLocation = adUseClient rst.open Trim$(SQL), cnn, adOpenStatic, adLockOptimistic 'rst.Movelast 'get RecordCount Set ExecuteSQL = rst MsgString = "查询到" & rst.RecordCount & " 条记录" End If ExecuteSQL_Exit: Set rst = Nothing Set cnn = Nothing Exit FunctionExecuteSQL_Error: cnn.BeginTrans cnn.Execute SQL sorf = 1 MsgString = "查询错误:" & Err.description If MsgString = "查询错误:[Microsoft][ODBC SQL Server Driver][SQL Server]用户 'sa' 登录失败。" Then sorf = 2 GoTo step1 End If Resume ExecuteSQL_ExitEnd Function
[解决办法]
由于涉及数据库操作较多,类的内容代码比较长,给个简单示例:
Option ExplicitPrivate CONN As ADODB.ConnectionPrivate Function openDB() As Boolean On Error GoTo openDBErr Set CONN = New ADODB.Connection CONN.ConnectionString = "..." CONN.CommandTimeout = 10 CONN.CursorLocation = adUseClient CONN.Open openDB = True Exit FunctionopenDBErr: openDB = False' MsgBox "数据库链接出错!", vbInformation + vbOKOnly, "错误"End FunctionPublic Function executeQuery(ByVal sSQL As String) As ADODB.Recordset On Error GoTo executeQueryErr Set executeQuery = CONN.Execute(sSQL) Exit FunctionexecuteQueryErr: Set executeQuery = Nothing MsgBox "数据库查询出错!", vbInformation + vbOKOnly, "错误"End FunctionPublic Function executeUpdate(ByVal sSQL As String) As Boolean On Error GoTo updateQueryErr CONN.Execute sSQL executeUpdate = True Exit FunctionupdateQueryErr: executeUpdate = False MsgBox "数据库更新出错!", vbInformation + vbOKOnly, "错误"End FunctionPrivate Sub closeDB() If Not (CONN Is Nothing) Then If CONN.state <> adStateClosed Then CONN.Close Set CONN = Nothing End IfEnd SubPrivate Sub Class_Initialize() If Not openDB() Then MsgBox "无法建立数据库链接!", vbInformation + vbOKOnly, "错误" End IfEnd SubPrivate Sub Class_Terminate() closeDBEnd Sub
[解决办法]
http://download.csdn.net/source/1498324