欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++连接SQL

程序员文章站 2022-06-20 17:26:45
1.引入ADO#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 2.创建连接数据库类(两个指针及四个成员函数)class CADOConn {publi ......

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();
}