本人想用VC++6.0连接Oracle10g,但是总在连接时出现选择数据源对话框,要求我选择数据源(我通过选择数据源对话框进行选择后,可以连接成功),而我已经在建立好了ODBC数据源(数据源驱动为Oracle in OraDb10g_home1),测试也成功了,请问这是为什么?如何解决?我的连接字串:CString strConn;
strConn.Format("Data Source=ORCL;"
"User Id=%s;Password=%s", 
m_strUsername, m_strPassword);
int nErr = m_db.OpenEx(strConn.GetBuffer(strConn.GetLength()), 
CDatabase::openReadOnly);

解决方案 »

  1.   

    //初始化OLE/COM库环境
    ::CoInitialize(NULL);// 初始化—连接数据库
    void ADOConn::OnInitADOConn()
    {
    if(m_pConnection==NULL)
    {
    try
    {
    //创建Connection对象
    m_pConnection.CreateInstance("ADODB.Connection");
    // 设置连接字符串,必须是BSTR型或者_bstr_t类型
    //连接Oracle数据库字符串
    //_bstr_t strConnect = _T("Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=MyUsername;Pwd=MyPassword;");
    //m_pConnection->Open(strConnect,"","",adModeUnknown);
    //连接SQL Server数据库的字符串
    //_bstr_t strConnect = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Password=123;Initial Catalog=xx;Data Source=(local)";
    //执行数据连接
    m_pConnection->Open((_bstr_t)strConnectSQL,"","",adModeUnknown);
    //连接Access数据库的字符串
    //_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xx.mdb";
    //m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    // 捕捉异常
    catch(_com_error e)
    {
    // 显示错误信息
    AfxMessageBox(e.Description());
    }
    }
    }