1.使用纯C++实现,通过db-libaray·
2.通过托管c++直接使用.netframework
3.使用OTL类库,简单例子参考: http://otl.sourceforge.net/otl4_examples.zip, http://otl.sourceforge.net/otl3_down.htm
4.使用Ado,ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层 ,甚至比以往所接触的ODBC API、DAO、RDO都要容易使用ADO使用步骤方法:
(1)初始化COM库,引入ADO库定义文件
(2)用Connection对象连接数据库
(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。
(4)使用完毕后关闭连接释放对象。//下面的import语句就是引入ADO库定义文件,有的环境下需要将\改为\\//编译的时候系统会生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
class ADOConn
{
public:
::_ConnectionPtr m_pConnection;
::_RecordsetPtr m_pRecordset; public:
ADOConn(void);
//初始化-连接数据库
void OnInitADOConn();
//执行查询,返回结果集
::_RecordsetPtr & GetRecordSet(_bstr_t bstrSQL);
//执行sql语句,更新数据库
bool ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
void ADOConn::OnInitADOConn()}
{
::CoInitialize(NULL);// 初始化OLE/COM库环境 ,为访问ADO接口做准备
//AfxOleInit();//used in MFC
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
//_bstr_t strConnect="driver=sql server;server=(local);Provide=SQLOLEDB;Data Source=SHL;Initial Catalog=CutwordSet;User ID=;Password=;";
_bstr_t strConnect="driver={sql server};server=(local);uid=;pwd=;database=CutwordSet";
hr = m_pConnection->Open( strConnect,"", "", adModeUnknown);
if(SUCCEEDED(hr))
cout<<endl;
//cout<<"连接数据库sucess"<<endl;
}
catch(_com_error e)///捕捉异常
{
//CString errormessage;
//errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
//AfxMessageBox(errormessage);///显示错误信息
cout<<"连接数据库失败!\r\n错误信息:"<<e.Description()<<endl;
}
}_RecordsetPtr & ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
//连接数据库,如果connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
//创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
cout<<e.Description()<<endl;
}
//返回记录集
return m_pRecordset;
}
bool ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
//是否已经连接数据库
if(m_pConnection ==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
//AfxMessageBox(e.Description());
cout<<e.Description()<<endl;
return false;
}
void ADOConn::ExitConnect()
{
//关闭记录集和连接
if(m_pRecordset !=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//释放环境
::CoUninitialize();//关闭ole/com库,释放资源
}