本人才接触Oracle。
写个简单的程序连接数据库。
第一个,用ODBC,很简单,
CDatabase m_Database;
m_Database.Open(NULL);
然后弹出个框,选择数据源。之前我看了数据源的概念:
odbc数据源的类型
  windows中odbc数据源的类型有三种:用户数据源、系统数据源、文件数据源。用户数据源(user dsn)只有创建它的用户才有权使用,系统数据源(system dsn)可以让所有在本机登录的用户使用,二者的数据库连接信息都存储在注册表中,通常称为机器数据源(machine dsn)。文件数据源(file dsn)是把与数据库的连接信息存储在一个具有dsn扩展名的文件中。文件数据源可以在安装同样驱动程序的所有用户之间共享。
问题1:数据源和数据库有何不同?假设我创建了一个叫做DataBase的数据库,如何连接?
问题2:新建一个数据源提示需要服务器、帐户和密码。服务器我用了127.0.0.1,帐户和密码我填了自己设定的sys的密码,却提示连接不成功。我查找了这些信息,却不大了解:
1. Oracle安裝完成后的初始口令?   internal/oracle  sys/change_on_install  system/manager  scott/tiger  sysman/oem_temp这个是什么初始口令?第二个,使用OLE连接数据库。大概代码如下:
CConnect m_connect;
CString m_dbname;
CString m_username;
CString m_userpsw;

if(m_connect.DoModal()!=IDOK)
return;
m_connect.GetData(m_dbname,m_username,m_userpsw);

odb.Open(m_dbname,m_username,m_userpsw);
if(!odb.IsOpen())
{
const char *m_errortext=odb.GetErrorText();
this->MessageBox(m_errortext,"错误",MB_OK|MB_ICONERROR);
return ;
}
CConnect的定义如下:
class CConnect : public CDialog
实际上就是获取数据库、用户名和密码的。问题一:为什么这个连接不需要输入服务器?只要数据库、用户名和密码就能找到?难道默认是连接127.0.0.1?问题二:我输入数据库、用户名和密码(用户名是sys,密码是自己的。)后,出现如下错误提示:Specified class registered in  registry,这是怎么回事?我接触Oracle才两天,所以很菜,请达人解答,谢谢。

解决方案 »

  1.   

    Oracle是需要名字映射的  
    大概是像下面这种,第一行的host是配的名字,连接时用来标识唯一数据源的,hostname是Oracle  server的名字或IP,下面的oracle_sid是oracle  server的SID  
    windows下面这段配置出现在  oracle\ora81\network\ADMIN\tnsnames.ora,  添加一个就可以了  
    HOST.SUZSOFT.COM  =  
       (DESCRIPTION  =  
           (ADDRESS_LIST  =  
               (ADDRESS  =  (PROTOCOL  =  TCP)(HOST  =  HOSTNAME)(PORT  =  1521))  
           )  
           (CONNECT_DATA  =  
               (SERVICE_NAME  =  oracle_sid)  
           )  
       )
      

  2.   

    不好意思,写错了一点
    上面的HOST.SUZSOFT.COM  全部是标识,可以随便填,最好加上域名
      

  3.   

    楼上的,我这个文件的配置没有问题啊,
    ROOT =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ROOT)
        )
      )
    我新建的数据库名字就是ROOT
    很正常,哪位大虾帮忙下?不胜感激。