ADO访问SQL(一)

#import  " C:Program FilesCommon FilesSystemadomsado15.dll "     no_namespace rename( " EOF " , " rsEOF " )
#include
< iostream >

using   namespace  std;

// 数据库基本操作类
class  DataAccess
{
private :
    
// 申明数据库对象
    _ConnectionPtr pConn;
    _RecordsetPtr pRst;
    _CommandPtr pCmd;
    
// 连接标识符
     bool  flag;
public :
    DataAccess()
    {
        
// 初始化连接对象
        CoInitialize(NULL);
        
// 创建ADO连接实例
        pConn.CreateInstance(__uuidof(Connection));
        
// 创建ADO记录集实例
        pRst.CreateInstance(__uuidof(Recordset));
        
// 创建ADO命令实例
        pCmd.CreateInstance(__uuidof(Command));
        
// 定义连接字符
        pConn -> ConnectionString = " Provider=SQLOLEDB;Server=(local);Database=Book; uid=sa; pwd=; " ;
        
// 标识符默认为false
        flag = false ;
    }
    
~ DataAccess()
    {
        
// 记录集不为空,释放记录集
         if (pRst != NULL)
        {
            pRst
-> Close();
            pRst.Release();
        }
        
// Cmd类不为空,释放Cmd
         if (pCmd != NULL)
        {
            pCmd.Release();
        }
        
// 连接不为空,释放连接
         if (pConn != NULL)
        {
            pConn
-> Close();
            pConn.Release();
        }
    }
    
// 打开数据库,成功返回TRUE,失败返回FALSE
    BOOL openConn()
    {
        
try
        {
            
this -> pConn -> Open( "" , "" , "" ,adConnectUnspecified);
            flag
= true ;
            
return  flag;
        }
        
catch (_com_error  & e)
        {
            
return  FALSE;
        }
    }
    
// 执行SQL语句,成功返回_Recordset,失败返回NULL
    _RecordsetPtr searchSql(_bstr_t sql)
    {
        
try
        {
            
if (flag == false )
            {
                
this -> openConn();
            }
            pCmd
-> put_ActiveConnection(_variant_t((IDispatch * )pConn));
            pCmd
-> CommandText = sql;
            
this -> pRst -> Open(sql,(IDispatch * ) this -> pConn,adOpenDynamic,adLockOptimistic,adCmdText);
            
// this->pRst=pCmd->Execute(NULL,NULL,adCmdText);
             return  pRst;
        }
        
catch (_com_error  & e)
        {
            
return  NULL;
        }
    }
};
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值