在程序(VB6)中用ADODB连接ORACLE,编译成功。生成EXE后,却连不上,提示“ORA-12154:TNS:could not resolve service name”
已引用 Microsoft ActiveX Data Objects 2.5 Library 但没有使用ADO控件。不知是否还缺少其他引用,请高手们指点。

解决方案 »

  1.   

    看看这篇文章,也许对你有帮助:
    http://hi.baidu.com/sheenshine/blog/item/0f8af9dd85109edf8c10296d.html
      

  2.   

    安装Oracle客户端在客户机上,并建立ODBC。
      

  3.   

    我用的字串是 "Provider=OraOLEDB.Oracle.1;USER ID=username;Password=password;Data Source=tnsname"
    问题在于,我VB开发软件中编译运行都正常,在SQL PLUS等工具中,也可以正常连接Oracle。检查Oracle的配置,TNSNAMES.ORA正确,SQLNET.ORA也没有配置参数。只是在执行EXE时报错。当我在连接字串中,改为"Provider=msdaora.1"时,同样只在执行EXE时出错,但错误提示为“Ora-06413: Connection not open",并产生一个sqlnet.log。文件中,在TNS字串的后面增加了CID、HOST和USER项。请高手指点。
      

  4.   


    ORACLE已经安装,并可以通过SQL PLUS连接。必须要建立ODBC吗?为什么在开发环境下可以运行呢?请指点。
      

  5.   

    生成EXE后,在同一台机器上运行,出现TNS错误,感觉不象是防火墙的原因。
      

  6.   

    我看你最好还是进行注释与DEBUG输出调试.VB里使用OutputDebugString输出调试信息,并用DbgView一类调试信息查看工具进行调试.Private Declare Sub OutputDebugString Lib "kernel32.dll" Alias "OutputDebugStringW" ( _ 
     ByVal lpOutputString As String)编译后这是一种比较有效的调试手段之一.
      

  7.   

    在我的程序中,是这样的:strCon=连接字串
    msgbox(strCon)   '输出的字串是正确的
    OutputDebugString(strCon)  '在Debugview中看到的字串也是正确的
    connection.open(strCon)    '执行到这里时出错
    因为不会用Dbgview,不知道这种情况下该如何DEBUG。谢谢!
      

  8.   

    如果你的 Exe 程序的完整路径名(包括文件名)太长或者有括号等特殊字符,也会引起 ORA-12154 错误。
      

  9.   

    DLYHM = "USER ID=" + frmPreSet.TXTyhm.Text
    DLMM = "password=" + frmPreSet.TXTdlmm.Text
    DLSLM = "Data Source=" + frmPreSet.TXTslm.Text
    LSsjk = DLYHM + ";" + DLMM + ";" + DLSLM
    LSsjk = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;" + LSsjk
        Set Gconnection_HQ = New ADODB.Connection
        Gconnection_HQ.Open LSsjk
        If err Then
            MsgBox "连接数据库失败", vbInformation
            Exit Sub
        End If
      

  10.   

    开发环境和编译后的程序至少运行的主体是不同的,
    会不会是他们获得的系统权限不一样,
    你用的是什么操作系统,WindowsXP?你可以试试建立系统ODBC数据源,然后访问系统数据源试试
      

  11.   

    如果装有杀毒软件Kaba,应该修改杀毒软件的设置,让他监听你的端口
      

  12.   


    不愧是VB老鸟!
    如你所说,我的EXE文件名中有括号,导致TNS错误。把括号去掉就可以正常运行了。
    不能相信,原来问题在程序以外。