用ODBC访问oracle,首先,我在ODBC管理器中添加数据源,在别名中填:rwh,在service中填:ruanwenhua(这是数据库服务器名),用户名:produce;
在程序中:打开数据库m_db.Open(NULL,FALSE,FALSE,"DSN=rwh;UID=produce;PWD=produce");即可对数据库进行揷、删、改、读等操作,操作都很正常,可是我有一个疑问:
我的数据库服务器名为ruanwenhua,服务名为orcl,可是在上述的配置和连接中并没有体现服务名,那么,它是怎么工作的呢。是不是因为我的服务器上只装了一个数据库,所以它会自己去找orcl?那么,如果安装了不只一个的数据库该如何处理。
我看如果在oracle的net easy config中配置是要配服务名的。

解决方案 »

  1.   

    rwh =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 200.200.200.200)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = orcl)
        )
      )
    上面是别名中的一段字符串,在Admin目录上,你也可以直接在Admin/tnsnames.ora直接改它,net easy config配置也已是改的
    这一个文件而已,它里面指到一个ip,对应一台电脑,端口1521,
    实例如orcl,也就指定到了一个数据库,oracle不像MS sqlserver
    它是分模式管理,不是分数据库管理的。
      

  2.   

    SID = orcl这一段中的orcl的信息是怎么来的呢,如rwh是远程数据库服务器名,在我的客户端上只在odbc中对它进行了配置,并没涉及到rwh上的SID,那么,客户机上怎么知道这个SID并写入了tnsnames.ora中呢?
    我现在是这样理解的:在配odbc时,输入了db server的机器名,这时客户机的oracle客户端会将服务器的default database配给这个odbc数据源使用。如果db server装了不只一个数据库,这时,要通过net easy config设置一个别名,除指定机器名外还要指定数据库的SID,这样,在odbc配置时通过这个配好的别名,才能访问到这个非缺省的数据库。
    这么说来,在odbc配置时,如要访问的是db server上的缺省数据库时,在Service栏里直接输服务器名就可以了,而要访问非缺省数据库时,则要输别名。
    不知道我这样的理解和做法对不对,请指教。
      

  3.   

    这是数据源带来的好处。
    通过odbc,用户可以不要知道数据库的更多信息。
    odbc提供了这样的途径,只要你知道数据源名和用户以及密码
    通过odbc就可以使用数据如果要连接另一个数据库,只要在odbc添加不同于上一个数据源名的DSN就可以了
      

  4.   

    第一次与Oracle打交道,还没有成功,努力中ing.....我在VB中用ADO与本机Oracle8.16连接,总出错,也不知道为什么?