我想把一个单线程的数据库访问程序改写成一个多线程数据库访问程序,于是将单线程中数据库连接函数整个移动到子线程中。但却总是连接失败,以前单线程时却没出现任何问题,不知什么原因,请教VB高手。下附源码:Public Sub StartConnectThread()
On Error Resume Next
Dim n As Long
Static nn As Integer
Dim blReturn As Boolean
Dim strCnn As String
Dim rstTmp As ADODB.Recordset
'连接数据库
strCnn = "driver={SQL Server};server=" & glsLocalset.pstrDatabaseSeverName & ";" & "uid=" & glsLocalset.pstrDatabaseUserName & ";pwd=" & glsLocalset.pstrDatabaseUserPassword & ";database=" & glsLocalset.pstrDatabaseName
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn
If cnn1.State <= 0 Then
MessageOut "连接数据库失败,请检测数据库设置!"
Exit Sub
End If
End Sub此函数在以前的单线程程序中运行完全正常,但移植到子线程中,cnn1.State中的值就总是不大于0,调试时其中的值为<object variable or with block variable not set>请高手帮忙!是否多线程连接数据库时还有其他的写法?其他的声明方法?
On Error Resume Next
Dim n As Long
Static nn As Integer
Dim blReturn As Boolean
Dim strCnn As String
Dim rstTmp As ADODB.Recordset
'连接数据库
strCnn = "driver={SQL Server};server=" & glsLocalset.pstrDatabaseSeverName & ";" & "uid=" & glsLocalset.pstrDatabaseUserName & ";pwd=" & glsLocalset.pstrDatabaseUserPassword & ";database=" & glsLocalset.pstrDatabaseName
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn
If cnn1.State <= 0 Then
MessageOut "连接数据库失败,请检测数据库设置!"
Exit Sub
End If
End Sub此函数在以前的单线程程序中运行完全正常,但移植到子线程中,cnn1.State中的值就总是不大于0,调试时其中的值为<object variable or with block variable not set>请高手帮忙!是否多线程连接数据库时还有其他的写法?其他的声明方法?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货