ADO接口

一、简介
有错误的地方还请CSDN兄弟指正,一起共同学习,谢谢!

一下简介来自百度:
ADO是微软提供的COM,用于访问数据库。当中有三个基本接口:_ConnectionPtr接口、_CommandPtr接口和、_RecordsetPtr接口。

_ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。用 _ConnectionPtr接口返回一个记录集不是一个好的使用方法。通常同CDatabase一样,使用它创建一个数据连接,然后使用其它对象执行数 据输入输出操作。

_CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,可以 利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。如果只执行一次或几次数据访问操作,后者是比较好的选 择。但如果要频繁访问数据库,并要返回很多记录集,那么,应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用 _CommandPtr接口执行存储过程和SQL语句。

_RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同_CommandPtr 接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自 己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局—ConnectionPtr接口,然后使用 _RecordsetPtr执行存储过程和SQL语句。

二、用法
Open()方法 :用于打开一个库连接
(1)_ConnectionPtr 只能指针)Open()方法的原型:
Open(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPassword,long Options)*
参数介绍:
ConnectionString 为连接字串
UserID 是用户名
Password是登陆密码
Options是连接选项
可以是如下几个常量:
adModeUnknown缺省,当前的许可权未设置
adModeRead只读
ComadModeWrite只写
adModeShareDenyRead阻止其它
Connection对象以读权限打开连 接
adModeShareDenyWrite阻止其它
adModeShareExclusive阻止其它
Connection对象打开连接
adModeShareDenyNone阻止其它程序或对象以任何权限建立连接

代码:

CString strSQL;
strSQL = "Provider=SQLOLEDB.1;Data Source=电脑名;User ID=sa;Password=;Initial Catalog=数据库名";
CoInitialize(NULL);         //初始化Com库,必须
_ConnectionPtr m_pConn;     //创建对象
HRESULT m_hr = m_pConn.CreateInstance("ADODB.Connection");
            if(SUCCEEDED(m_hr))
            {
                //超时判断
                m_pConn->put_ConnectionTimeout(long(5));
                m_pConn->Open((_bstr_t)strSQL,"", "", adModeUnknown);
                PRINTF(_T("Connect to Database succeed;"));
            }
        }
        //_com_error 出现的异常
        catch(_com_error &e)
        {
            PRINTF(_T("Connect to Database fail"));
            PRINTF(e.Description());
            return FALSE;
        }

(2)_ConnectionPtr 智能指针Exucute方法的原型:
_RecordsetPtr Connection::Execute(_bstr_t CommandText, VARIANT * RecordsAffected, long Options);
其中CommandText是命令字串,通常是SQL命令
参数RecordsAffected是操作完成后所影响的行数
参数Options表示CommandText中内容的类型,可以取下列值之一:
1.adCmdText表明CommandText是文本命令
2.adCmdTable表明CommandText是一个表名
3.adCmdProc表明CommandText是一个存储过程
4.adCmdUnknown未知 Execute执行完后返回一个指向记录集的指针。

代码:

CString strCmd;
CString strTime ="2017-01-01";
//Mydate 表
//Time   字段
strCmd.Format(_T("SELECT * FROM Mydate WHERE Time <= '%s'"), strTime);
_RecordsetPtr pRst("ADODB.Recordset");
try
    {
        m_pConn->Execute((_bstr_t)strCmd, NULL, adCmdText);
            CString str;
            str.Format(_T("%s succeed",strTime);
            PRINTF(str);
        }
        catch(_com_error &e)
        {
            CString str;
            str.Format(_T("%s fail;"), strTime);
            PRINTF(str);
            PRINTF(e.Description());
            return DB_ERROR;//返回自定义失败代码
        }

//注意,在头文件处加入此句
#import”C:\ProgramFiles\CommonFiles\System\ado\msado15.dll” no_namespace rename(“EOF”,”adoEOF”)

//用完后
CoUninitialize(); //停止Com库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值