以前没有用过Oracle数据库,不知该怎样连接?听人说不能用oledb方式,只能用ODBC连接,是这样吗?还有连接后应该怎样调用视图?最好能有例子!谢谢了!!

解决方案 »

  1.   

    oledb 方式的连接
    一般说来,访问远程后台数据库我们都是通过ODBC来完成的。但是,ODBC有一个致命的缺点——速度慢。事实上,对于ORACLE数据库,除了ODBC,我们还可以利用ORACLE本身所提供的OLE对象(Oracle Objects for OLE)来实现快速访问有关数据库。
    在ORACLE V8中,Oracle Objects for OLE(以下简称OO)为常用开发工具提供了一整套与数据库简单相连的通讯访问方式,它支持各种支持VB自定义控件或OLE自动化(OLE Automation)的开发环境。OO主要由三部分组成:
    l ORACLE对象服务器(the Oracle Object Server)
    l ORACLE数据访问控件(the Oracle Data Control)
    l C++类库(the Oracle Objects for OLE C++ Class Library)OO主要包括对象和用途: 
    OraClient       定义工作域,并管理会话集。
    OraSession     管理数据库对象集,并提供共享式连接和事务控制。
    OraConnection  与ORACLE数据之间建立的连接。
    OraDatabase    对ORACLE数据库的一个“虚”登录。
    OraParamArray  参数组。
    OraParameter   绑定在SQL语句或PL/SQL块中的有关变量。
    OraDynaset    利用SELECT语句所得到的记录。
    OraSQLStmt   预定义的单独的一句SQL语句。
    OraField      OraDynaset对象中的列(Column)。Private Sub Command_Click()
    Ls_server = "baoprog"
    '联接本地Oracle数据库
    Ls_username = "system"
    '用户名为 system
    Ls_password = "manager"
    '密码为 manager
    '建立 OraSession 对象
    Set OraSession = CreateObject("OracleInProcServer.XOraSession")
    '错误处理
    On Error GoTo Connect_err:'建立OraDatabase 对象以联接到Oracle数据库
    Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username + "/" + Ls_password, 0&)
    On Error GoTo 0
    Exit Sub
    Connect_err:
    If InStr(OraSession.LastServerErrText, "ORA-01017") Then
    MsgBox "无效的用户名和密码,数据库联接不成功!", vbOKOnly + vbCritical, "提示信息"
    Else
    MsgBox "数据库联接不成功!请查看下面的出错信息:" + Chr(13) + OraSession.LastServerErrText, vbOKOnly + vbCritical, "提示信息"
    End IfEnd Sub
      

  2.   

    看一看:
    http://www.84ren.com/bbs/read.php?tid=712
      

  3.   

    Option Explicit 
      Dim Cn As rdoConnection 
      Dim En As rdoEnvironment 
      Dim CPw As rdoQuery 
      Dim Rs As rdoResultset 
      Dim Conn As String 
      Dim QSQL As String 
      Dim Response As String 
      Dim Prompt As String   Private Sub cmdCheck_Click()     QSQL = "Select Item_Number, Depot_Number From rdooracle Where " _ 
        & "item_number =" & txtInput.Text 
        Set Rs = Cn.OpenResultset(QSQL, rdOpenStatic, , rdExecDirect)     Prompt = "Item_Number = " & Rs(0) & ". Depot_Number = " _ 
        & Rs(1) & "."     Response = MsgBox(Prompt, , "Query Results")     Rs.Close   End Sub   Private Sub cmdSend_Click()     CPw(0) = Val(txtInput.Text) 
        CPw.Execute     Prompt = "Return value from stored procedure is " & CPw(1) & "." 
        Response = MsgBox(Prompt, , "Stored Procedure Result")   End Sub   Private Sub Form_Load()     Conn = "UID=;PWD=;driver={Microsoft ODBC Driver for Oracle};" _ 
          [$ "CONNECTSTRING=MyOracle]"     Set En = rdoEnvironments(0) 
        Set Cn = En.OpenConnection("", rdDriverPrompt, False, Conn) 
        QSQL = "{call rdoinsert(?,?)}" 
        Set CPw = Cn.CreateQuery("", QSQL)   End Sub   Private Sub Form_Unload(Cancel As Integer)     En.Close   End Sub 
    ===================================
    kuui_chiu
      Conn = "UID=test;PWD=test;driver={Microsoft ODBC Driver for Oracle};" [$ "CONNECTSTRING=test]" 
        Set En = rdoEnvironments(1) 
        Set Cn = En.OpenConnection("", rdDriverPrompt, False, Conn) 
        MsgBox "successful" 运行时报错,在Set En = rdoEnvironments(1)报错误(429),ActiveX元件无法产生物件,我哪里弄错了,试了好久,没结果,版主帮我看看吧~~~~~~~~~--------------------------------------------------------------------------------贝贝牛
    原理很简单,首先建立ODBC数据源连接池,记住要使用系统DSN 添加MICROSOFT ODBC FOR ORACLE 然后输入标识名 最下面SID 输入ORACLE的实例名称 就可以了不用填写用户等,然后是定义连接 值得注意的是ORACLE的查询速度非常的好,只是在连接过程中启始连接速度比较慢;解决方法是使用长连接就可以了。--------------------------------------------------------------------------------kuui_chiu
    贝贝牛:感谢你的回复,我试着在系统DSN里建了这个实例,连接测试也成功了,可是在程序里还是通不过,可否帮忙看看,我哪里写错了啊,谢谢了~~~~~~~~--------------------------------------------------------------------------------贝贝牛
    运行时报错,在Set En = rdoEnvironments(1)报错误(429),ActiveX元件无法产生物件,我哪里弄错了,试了好久,没结果,版主帮我看看吧 
    我看这问题是在你没有加载Microsoft ActiveX 2.5 LIB 的缘故。 
    conn="DSN=;UID=;PWD=" 
    其中DSN就是你在系统DSN定义的名称,UID就是ORACLE里面的用户名一般来说用SCOTT,PWD=tiger. 
    剩下的就可以相当连接ACCESS那样就可以了。最简单的方法就是使用VB数据向导就可以了,不要告诉我你不会用哦。--------------------------------------------------------------------------------kuui_chiu
    用向导我已经成功了,可是在程序里怎么也弄不成,我都已经把与access, database, remote等相关词的都加载了,还有,我用的是VBA,我想与VB应该是一样的吧~~~~~~~~--------------------------------------------------------------------------------贝贝牛
    当然你选择的都没有用不是用ACCESS之类的东西,应该用ODBC然后选择你建立的ODBC数据源然后你要输入用户名称和密码,接下来就是选择表了,、然后你应该知道怎么做了吧,不过数据向导做不来的是用了控件的,如果你想用类的话,你在引用里面选择Microsoft activex 2.5 lib 就可以象上面的代码一样使用类了。如果需要等下次我写个模块给你。--------------------------------------------------------------------------------kuui_chiu
    贝贝牛 wrote: 
    当然你选择的都没有用不是用ACCESS之类的东西,应该用ODBC然后选择你建立的ODBC数据源然后你要输入用户名称和密码,接下来就是选择表了,、然后你应该知道怎么做了吧,不过数据向导做不来的是用了控件的,如果你想用类的话,你在引用里面选择Microsoft activex 2.5 lib 就可以象上面的代码一样使用类了。如果需要等下次我写个模块给你。 
    我连的是Oracle数据库,因为是第一次做,所以不是很懂,非常感谢你的回复,等你把模块传上来,我再试试~~~~~~~~~~~:)