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 ID=scott;Data Source=ORCL;Persist Security Info=True","","",adModeUnknown);
}
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);
转载于:https://blog.51cto.com/ymdzz/1337998