我用VB+SQL2000写程序。
VB里如下操作数据库
dim conn as new ADODB.Connetion
dim r as new ADODB.Recordset
conn.ConnetionString=...
conn.open...
r.open...问题是必须安装了MDAC后才可以进行运行,否则出错,而MDAC的安装还必须是管理员帐号。
我的程序需要运行在几百台电脑上,安装MDAC很麻烦,而且电脑经常会重装什么的。
有没有什么办法可以不安装MDAC而运行程序?
我仅用到了以上的方式操作数据库。

解决方案 »

  1.   

    或者有没有不需要管理身份就能安装的MDAC?
      

  2.   

    一定要以管理员身份安装MDAC才能连接数据库吗?
      

  3.   

    不用装吧   引用低版本的ADO就是了  大部分XP里有数据引擎的
      

  4.   

    我的客户端大概250~400台电脑,都是win2000 profession的
      

  5.   

    你引用低版本的ADO就可以了,好象win2000集成的是ADO2.5......
      

  6.   

    真的吗?我引用ADO2.5就可以了?我现在引用的是ADO2.8,我需要明确的答复,因为现在很多客户端我已经安装了MDAC,所以无法验证
      

  7.   

    还有引用低版本的ADO会不会在功能上有所欠缺?
      

  8.   

    我数据库操作的代码如下,写在类模块(DbOperation)里面的. 
    ConnectString 是一个常量,定义在其它模块里 Public Const ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=True;UID=sa;PWD=sa;Initial Catalog=CCS;Data Source=109.120.37.160"'声明一个连接
    Dim conn As ADODB.Connection
    '声明一个数据集对象
    Dim rst As ADODB.Recordset
    Public Sub DB_Connect()
       On Error GoTo err
       '建立连接
       Set conn = New ADODB.Connection
       conn.ConnectionTimeout = 12 '设置连接超时,12s内无法连接视为服务器不可用
       conn.Open ConnectString '连接服务器
       Exit Sub
    err:
       CreateErrLog Now, "DbOperation.DB_Connect", "", err.Number
       End
    End Sub
    Public Function querySQL(ByVal sql As String, Optional LockType As LockTypeEnum = adLockOptimistic) As ADODB.Recordset
       On Error GoTo err
       '执行查询
       Set rst = New ADODB.Recordset
       rst.Open Trim$(sql), conn, adOpenKeyset, LockType
       Set querySQL = rst
       Exit Function
    err:
       CreateErrLog Now, "DbOperation.querySQL", sql & "," & LockType, err.Number
    End Function
    Public Sub executeSQL(ByVal sql As String)
       On Error GoTo err
       '执行sql语句
       conn.BeginTrans
       conn.Execute (sql)
       conn.CommitTrans
       Exit Sub
    err:
       CreateErrLog Now, "DbOperation.executeSQL", sql, err.Number
    End Sub
    Public Sub DB_DisConnect()
       '关闭连接
       If conn Is Nothing Then Exit Sub
       If conn.State = adStateOpen Then conn.Close
       '释放连接
       Set conn = Nothing
    End Sub请问,我引用ADO2.5,在win2000最原始的环境(没安装数据库任何相关的东西)下能正常操作SQL2000吗?
      

  9.   


    你可以在win2000上搜索一下,msado25.tlb便是
    ADO2.5已经引进了流对象,一般应用性能上不会有什么问题
      

  10.   

    我要找个Win2000的裸机,测试一样同样的程序,一个以用ADO2.8,一个引用ADO2.5,看看是不是前者不能运行,后者可以运行
      

  11.   

    我一般在设计的程序的时候引用的 都是2.1    
    当然 也是连接SQL SERVER 2000  至于WIN2K有没有2.1  没试过 不清楚
      

  12.   

    我分别引用ADO2.0\2.1\2.5\2.8,在没装MDAC的win2000电脑上都不能运行,提示
    Run-time error '-2147467259(80004005)'
    [DBNMPNTW]找不到指定的SQL Server我查了一下,在C:\Program Files\Common Files\System\ado下有msado20.tlb\msado21.tlb两个文件。
    怎么办啊
      

  13.   

    有没有见多识广的啊?
    或者把MDAC中需要的部分集成到EXE文件中也行啊,MDAC也就几M而已
      

  14.   

    现在手边没有WIN2000环境,没法测试,如果WIN2000打上SP4补丁,记得是有ado2.5的
    而且你测试的这个错误提示:"找不到指定的SQL Server "是ADO版本的原因吗?
    你可以在测试机器上用建立ODBC数据源的方式,看看能不能连接上服务器......如果可能,你用VB-PowerWrap打包,这个不用安装,应该可以解决
    如果觉得VB-PowerWrap生成的程序启动慢,可以试试先建立一个工程,引用一下ADO2.8,不用写代码,生成EXE后,利用VB-PowerWrap生成一个EXE,在WIN2000机器上运行一次,然后再安装你的程序,好象应该可以吧......? 呵呵,这个属于歪门邪道,我瞎想的,试试看吧.......
      

  15.   

    VB-PowerWrap以前没用过,下载后试了一下,发现生成的新的EXE文件有时运行不正常,会一闪一闪,关也关不了,CPU占用到100%,只能注销。
    所以感觉比较危险