本人是一新手兼菜鸟,向高人请教下ADO的Oracle连接问题,谢了!
前期处理:
import "c:\program files\common files\system\ado\msado15.dll" \
 no_namespace \
 rename ("EOF", "adoEOF")
_ConnectionPtr m_pConnection;
这里应该没有问题吧void COHDCXDlg::ConnectDB()
{
     CoInitialize(NULL);
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
        m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Password=manager;User ID=system;Data Source=oradb;Persist Security Info=True","","",adModeUnknown); 
 }
 catch(_com_error e)
 {
          CString errormessage;
          errormessage.Format("数据库连接失败!\r\n错误信息:%s", e.ErrorMessage());
          AfxMessageBox(errormessage);
 }    
}
执行后老是提示:数据库连接失败!
我的数据库就是通过sqlplus建的几个简单表,system,manager,oradb是sqlplus界面登陆时的输入项。
另外,能否告知Open()函数的参数具体指数据库中的什么?

解决方案 »

  1.   

    m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Password=manager;User ID=system;Data Source=oradb;Persist Security Info=True","","",adModeUnknown); Password: 密码
    User ID:用户名
    Data Source: 监听中的实例名连接时改这三个参数就可以了,其他的默认就好。 
      

  2.   

    但是,system就是sqlplus的用户名,manager是生气了sqlplus的密码,oradb是主机名(服务名),为什么不行啊?从哪里可得到监听中的实例名啊?
      

  3.   

    Data Source:即sqlplus中的“主机字符串”,应该是tnsnames.ora中配置的连接串名
    只要和sqlplus一样就没有问题,具体检查一下程序
      

  4.   


    你用sqlplus system/manager@oradb能连通吗?
    这里的Data Source填的就是@后边的内容