try
{
m_ADOConn.CreateInstance(__uuidof(Connection));
CString connstr="Provider=OraOLEDB.Oracle.1;User ID=KNS;Password=KNS;Data Source=OKDC;";//oracle
m_ADOConn->Open( _bstr_t(connstr),"","", adModeUnknown);//连接成功

m_pADOSet.CreateInstance(__uuidof(Recordset));

this->m_bConnSuccess=true;
return true;
}
// Catch Exceptions
catch(_com_error &e)
{
CString err;
err.Format("%s", (char*)(e.Description()) );
//AfxMessageBox(err);
this->m_bConnSuccess=false;//置成功标志为假
return false;
}        CString strSQL = "select testvc.aa from testvc";
if ( m_ADOConn->State == adStateOpen)
m_ADOConn->Close();
try
{
m_ADOConn->Open(strSQL, m_ADOConn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); 
return TRUE;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error: %s",(char*)e.Description());
AfxMessageBox(err);
return FALSE;
}目前的问题是连接可以成功  但是执行查询的时候抛出异常 
 "ADO Error: ROW-00054: ????? O/S-Error: (OS 126) ????????c"
这是什么东西啊  救命

解决方案 »

  1.   

    没用过似乎你那个查询语句也要转到_bstr_t??
      

  2.   

    m_ADOConn->Open不能Open SQL语句
      

  3.   

    try
        {
            m_ADOConn->Open(strSQL, m_ADOConn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); 
            return TRUE;
        }
        catch(_com_error &e)
        {
            CString err;
            err.Format("ADO Error: %s",(char*)e.Description());
            AfxMessageBox(err);
            return FALSE;
        }是不是楼主笔误了?try
        {
            m_pADOSet->Open(strSQL, m_ADOConn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); 
            return TRUE;
        }
        catch(_com_error &e)
        {
            CString err;
            err.Format("ADO Error: %s",(char*)e.Description());
            AfxMessageBox(err);
            return FALSE;
        }
      

  4.   

    m_ADOConn->Open
    前是否已经执行了下面语句:
    if ( m_ADOConn->State == adStateOpen)
            m_ADOConn->Close();
      

  5.   

    对了 不好意思 刚才复制代码复制错了 
     CString strSQL = "select testvc.aa from testvc";
    if ( m_pADOSet->State == adStateOpen)
            m_pADOSet->Close();
        try
        {
            m_pADOSet->Open(strSQL, m_ADOConn.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); 
            return TRUE;
        }
        catch(_com_error &e)
        {
            CString err;
            err.Format("ADO Error: %s",(char*)e.Description());
            AfxMessageBox(err);
            return FALSE;
        }
      

  6.   

    adOpenDynamic换成adOpenStatic试试
    m_pADOSet->Open(strSQL, m_ADOConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText)
      

  7.   

    if ( m_ADOConn->State == adStateOpen)
    m_ADOConn->Close();你都把它关闭了,还能查吗?
    去掉这两句