一、简介
有错误的地方还请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库