来看看 发表于 2018-9-13 10:48:08

VC++ ADO连接Oracle数据库

  VC++ ADO连接Oracle数据库:
  先创建好数据源
  1 在stdafx.h中添加以下代码(在其他要编译的文件中添加也可)
  #import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
  2 初始化COM
  AfxOleInit();
  3 连接相关的字符串
  _ConnectionPtr m_pConnection;
  _RecordsetPtr m_pRecordset;
  m_pConnection.CreateInstance(__uuidof(Connection));
  try //建立数据库连接
  {
  m_pConnection.CreateInstance(__uuidof(Connection));

  m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Password=tiger;User>  }
  catch(_com_error e)
  {
  CString errormessage;
  errormessage.Format("数据库连接失败!\r\n错误信息:%s", e.ErrorMessage());
  AfxMessageBox(errormessage);
  }
  _bstr_t sql="select * from emp";
  m_pRecordset.CreateInstance(__uuidof(Recordset));
  m_pRecordset->Open(sql,m_pConnection->GetConnectionString(),adOpenStatic,adLockOptimistic,adCmdText);
  if(!m_pRecordset->BOF)//判断表内数据是否为空
  m_pRecordset->MoveFirst();
  else
  {
  AfxMessageBox("BookType表内数据为空");
  return;
  }
  while(!m_pRecordset->adoEOF)
  {
  CString item = (TCHAR*)(_bstr_t)m_pRecordset->GetCollect("ENAME");
  m_list.AddString(item);
  m_pRecordset->MoveNext();
  }
  m_pRecordset->Close();
  查
  _bstr_t sql="select name from booktype";
  m_pRecordset.CreateInstance(__uuidof(Recordset));
  m_pRecordset->Open(sql, m_pConnection->GetConnectionString(),adOpenStatic,adLockOptimistic,adCmdText);
  if(!m_pRecordset->BOF)//判断表内数据是否为空
  m_pRecordset->MoveFirst();
  else{
  AfxMessageBox("BookType表内数据为空");
  return;
  }
  while(!m_pRecordset->adoEOF){
  CString item=m_pRecordset->GetCollect("name");
  m_pRecordset->MoveNext();
  }
  m_pRecordset->Close();
  增加:
  _bstr_t sql="insert into tablename values (".....;
  m_pConnection->Execute(sql,NULL,adCmdText);
  删除
  _bstr_t sql="delete from tablename where ...";
  m_pConnection->Execute(sql,NULL,adCmdText);
  改
  _bstr_t sql="update tablename set xx=...";
  m_pConnection->Execute(sql,NULL,adCmdText);

页: [1]
查看完整版本: VC++ ADO连接Oracle数据库