各位好,我用VB 建立一线程,线程里包括对数据库的一些操作,但在建立ADOCONNECTION对象时出现 automation error coinitialize has not been
called ,但VB好象不能调用 coinitialize(NULL),请教各位高手该如何处理?
数据库操作的类模块代码如下:
Public ObjConn As ADODB.Connection
Public ObjRecordset As ADODB.Recordset
Public DataConnection As New ADODB.Connection
'连接数据库
Public Function openconnection() As ADODB.Connection
  'On Error Resume Next
  'Dim ObjConn As ADODB.Connection
  On Error GoTo err1
    If ObjConn Is Nothing Then
        
        Set ObjConn = New ADODB.Connection  '出现错误
        ObjConn.ConnectionString = "Provider=SQLOLEDB.1;Password=; _
                                Persist Security Info=True;User  _
                               ID=;Initial Catalog=SMS;Data _ 
                                  Source=10.50.0.231"
        ObjConn.Open
    End If
    Set openconnection = ObjConn
    Exit Function
err1:
   MsgBox "desc:" & err.Description & "help" & err.HelpFile
End Function
'增加记录
Public Function InsertData(SqlSt As String) As Boolean
   Dim InsertRS As New ADODB.Recordset
   'On Error GoTo err
   'Set InsertRS = New ADODB.Recordset
   'If DataConnection.state = 0 Then
    
      Set DataConnection = openconnection
   'End If
   
   InsertRS.ActiveConnection = DataConnection
   
   'InsertRS.DataSource = SqlSt
   InsertRS.Open SqlSt, , , adLockOptimistic
   InsertData = True
   Set InsertRS = Nothing
   Exit Function
'err:
  'Set InsertRS = Nothing
  'InsertData = False
End Function'查询
Public Function QueryData(SqlSt As String) As ADODB.Recordset
  
   On Error GoTo err
   Set QueryData = New ADODB.Recordset
   If DataConnection.state = 0 Then
      DataConnection = openconnection
   End If
   QueryData.ActiveConnection = DataConnection
   QueryData.Source = SqlSt
   QueryData.Open , , adOpenStatic, adLockReadOnly
   Exit Function
err:End Function

解决方案 »

  1.   

    Set ObjConn = New ADODB.Connection  '出现错误
    为什么会这样?难道你的线程和程序不在同一个工程内吗?
      

  2.   

    TO qingming81(晴明):
     是在同一个DLL里的不同模块,请指点,谢谢!!
      

  3.   

    要不然各定义各的连接及记录集,也就是你的那几个function函数都要有吧。
      

  4.   

    你犯的错误就像是在模块中定义一个Image对象一样:
    dim image1 as image
    在你的这种情况下应该使用
    Set ObjConn=createobject("Adodb.connection")
    创建数据库连接对象,然后再进行操作
    提示到此应该差不多了,毕竟你的信誉度不够
      

  5.   

    to  Unending(屠城) :
      老兄,你那方法不行呀,能不能给多点提示?谢谢!
      

  6.   

    to all:
     我已经把它们放到同一模块下,没有出现错误,但程序没有好象停留在
    Set ObjConn = New ADODB.Connection  
    这句中,没有继续执行下一句,请问这是什么问题?谢谢
      

  7.   

    为什么我把创建adoconnection 对象放在线程以外,其他的不变程序可以正常运行??请各位指教!!