C++连接SQL
1.引入ado
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("eof","adoeof")
2.创建连接数据库类(两个指针及四个成员函数)
class cadoconn
{
public:
cadoconn();
virtual ~cadoconn();
_connectionptr m_pconnection; //对象智能指针连接操作数据库
_recordsetptr m_precordptr; //recordset对象指针(记录集)
//初始化连接数据库,执行查询,执行sql语句,断开连接
void oninitdbconnect();
_recordsetptr &getrecordset(_bstr_t bstrsql);
bool executesql(_bstr_t bstrsql);
void exitconnect();
};
3.四个成员函数实现
void cadoconn::oninitdbconnect()
{
::coinitialize(null); //初始化ole/com库环境
try
{
//创建connection对象
m_pconnection.createinstance("adodb.connection");
//设置连接字符串
_bstr_t strconnect="provider=sqloledb.1;integrated security=sspi;persist security info=false;initial catalog=自己数据库填写处;data source=.";
//server和uid,pwd的设置根据实际情况来设置
m_pconnection->open(strconnect,"","",admodeunknown);
}
catch(_com_error e)
{
afxmessagebox(e.description()); //显示错误信息
}
}
_recordsetptr & cadoconn::getrecordset(_bstr_t bstrsql)
{
try
{
if(m_pconnection==null) //连接对象不存在
oninitdbconnect(); //重新连接
m_precordptr.createinstance(_uuidof(recordset)); //创建记录集对象
//执行查询,等到记录集
m_precordptr->open(bstrsql,m_pconnection.getinterfaceptr(),adopendynamic,adlockoptimistic,adcmdtext);
}
catch(_com_error e) //捕捉异常
{
afxmessagebox(e.description()); //显示错误信息
}
return m_precordptr; //返回记录集
}
bool cadoconn::executesql(_bstr_t bstrsql)
{
try
{
if(m_pconnection==null)
oninitdbconnect();
m_pconnection->execute(bstrsql,null,adcmdtext);
return true;
}
catch (_com_error e)
{
afxmessagebox(e.description());
return false;
}
}
void cadoconn::exitconnect()
{
if(m_pconnection!=null)
{
m_precordptr->close();
m_pconnection->close();
}
::couninitialize();
}
上一篇: 朱棣已得*为什么一定要方孝孺写登基诏书?朱棣杀方孝孺有什么目的?
下一篇: 没撒谎