CoInitialize(NULL);
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch(_com_error e)
{
       
CString log;
log.Format("数据库打开异常,原因:%s",(char*)e.Description());
MessageBox((LPCTSTR)e.Description(),"数据库打开异常",MB_ICONERROR);
CDialog::EndDialog(-1);
return FALSE;
}
CString log;
CString str="Provider=MSDAORA.1;Password=";//OraOLEDB.Oracle.1
      str+="winnix";
    str+=";Persist Security Info=False;User ID=";
      str+="winnix";
    str+=";Data Source=";
    str+="winnix";
        _RecordsetPtr pRd=NULL;
try
{


if(m_pConnection->GetState()&adStateOpen)
m_pConnection->Close();
m_pConnection->CursorLocation=adUseClient;
m_pConnection->Open((_bstr_t)str,"","",adModeUnknown);
        }
catch(_com_error& e)
{
MessageBox("数据库连接错误" , "错误" , MB_OK|MB_ICONERROR);
log.Format("数据库打开异常,原因:%s",(char*)e.Description());
Addlog(log);
exit(0);
}
  try
  {
if(m_pRecordset->GetState()&adStateOpen) m_pRecordset->Close();
CString sql="WINNIX.T_OPERATOR";
m_pRecordset->Open((_bstr_t)sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdTable);//这里打开整个表的时候则不会出现错误..........
m_pRecordset->Close();
  }
try
 {
 pRd.CreateInstance(__uuidof(Recordset));
 if(pRd->GetState()&adStateOpen) pRd->Close();
 CString sql;
 if(dlg.m_password=="")
 {
 sql="SELECT * FROM T_OPERATOR WHERE O_ACCOUNT='";
 sql+=dlg.m_name;
 sql+="' AND O_PASSWD IS NULL AND O_STATUS='0' AND O_TYPE='1'";
 }
 else
 {
 sql="SELECT * FROM T_OPERATOR WHERE O_ACCOUNT='";
 sql+=dlg.m_name;
 sql+="' AND O_PASSWD='";
 sql+=dlg.m_password;
 sql+="' AND O_STATUS='0' AND O_TYPE='1'";
 }
         pRd->Open((_bstr_t)sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdTable);//这里用上面的sql选择语句来打开数据库的时候就会出错,报无效的表名的错误.可是我的表还有那些字段明明都在啊!
 catch (_com_error& e)
 {
log.Format("数据库打开异常,原因:%s",(char*)e.Description());
log+="动作时间:";
log+=CTime::GetCurrentTime().Format("%Y-%m-%d %H:%M:%S\r\n");
Addlog(log);
exit(0);
 }
我真是想不清楚哪里有错误啊.忘高人解答!