小弟使用如下方法连接oracle数据库
Dim cnOracle As New ADODB.Connection
cnOracle.Open "DSN=myOra;UID=OraOwner;PWD=123456"
为什么在vb设计环境下运行能够正常连接成功!
但是,编译成exe文件后!就连接失败,并提示:
[Oracle][odbc][ora]ora-12154:tns:无法处理服务名
请高手执教怎么在编译后不出现上面的错误!
谢谢

解决方案 »

  1.   

    我用的是ORACLE的自带的调用函数,没试过用ADO调ORACLE
      

  2.   

    怎么调用ora自带函数?请指教
    客户端已经安装了!请指教
    谢谢
      

  3.   

    "Provider=OraOLEDB.Oracle.1;Password=test;Persist Security Info=true;User ID=test;Data Source=ora"
    用连接字符串试试
      

  4.   

    还是不行!提示:TNS:无法处理服务名
    请指教!谢谢
      

  5.   

    你在ODBC环境下测试与数据库的连接是否能连通?!
      

  6.   

    ODBC下可以连接成功!请指教!谢谢
      

  7.   

    我也生成了.exe文件,但是没问题呀
      

  8.   

    用这个连接方式试试看:
    ODBC 
     New version:"Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"  Old version:"Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"
      

  9.   

    '========================================
    '建立与Oracle数据库的连接
    '========================================
    Public Function Conn_Oracle() As Boolean
           On Error GoTo err1
           Dim strConn As String
           Dim i As Long
           
           If Not Conn Is Nothing Then Set Conn = Nothing
           
           Set Conn = New ADODB.Connection
           
           strConn = ""
           strConn = strConn & "Provider=OraOLEDB.Oracle;"
           strConn = strConn & "Data Source=" & ServerName & ";"
           strConn = strConn & "User ID=" & UserName & ";"
           strConn = strConn & "PassWord=" & PassWord & ";"
           
           'Conn.ConnectionString = "Provider=OraOLEDB.Oracle;data source=gyx_kjc-gyx;user id=flyingzfx;password=xiangxiang;"
           'Conn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=FLYING;OSAuthent=1;"
           strConnectionString = strConn
           
           Conn.ConnectionString = strConn
           Conn.CommandTimeout = 60
           Conn.CursorLocation = adUseClient
           Conn.Open
           
    '       For i = 0 To Conn.Properties.Count - 1
    '             Debug.Print Conn.Properties(i).Name, Conn.Properties(i).Type, Conn.Properties(i).Value, Conn.Properties(i).Attributes
    '       Next i
           
           '建立表空间
           'Conn.Execute "CREATE TABLESPACE ""FLYINGZFX"" DATAFILE 'D:\flyingzfx.dbf' SIZE 5m autoextend on", , adCmdText
           '删除表空间(其中一步)
           'Conn.Execute "alter database 'D:\flyingzfx.dbf' offline drop", , adCmdText
           
           '添加字段
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST ADD(CC VARCHAR2(50))"
           '修改字段类型
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST MODIFY(A VARCHAR2(50))"
           '删除字段
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST DROP (A, B) CASCADE CONSTRAINTS"
           '删除主键
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST DROP CONSTRAINT BB CASCADE"
           '删除表
           'Conn.Execute "DROP TABLE xxxx TRUNCATE CASCADE"
           
           Debug.Print "Connection Success!!!" & " (Conn_Oracle)"
           Conn_Oracle = True
           Exit Function
           
    err1:
           Conn_Oracle = False
           
           
           Debug.Print Err.Description
           Err.Clear
           
           If Not Conn Is Nothing Then
                  If Conn.State <> 0 Then Conn.Close
                  Set Conn = Nothing
           End If
           
    End Function
      

  10.   

    应该主要就是你的Oracle的服务名没有写对吧