ADO接口

来源:互联网 发布:sdrsharp软件 编辑:程序博客网 时间:2024/06/15 00:00

一、简介
有错误的地方还请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
原创粉丝点击