ADO之Command对象
本文摘自:https://blog.csdn.net/hfchenle/article/details/51833027
Connection对象的属性有如下几个:
1.ConnectionString属性:是连接字符串,通过传递包含一系列由分号分隔的“argument=value”语句的详细连接字符串,可指定用于建立连接数据源的信息。连接串格式根据数据源的不同有所不同。
2.Open方法:建立到数据源的物理连接。
Open函数详细定义:
1 HRESULT Open (_bstr_t ConnectionString,
2 _bstr_t UserID,
3 _bstr_t Password,
4 long Options)
参数意义:
ConnectionString :可选,类型为字符串,包含连接信息,如果设置了ConnectionString属性,该参数可以不设置
UserID:可选,字符串,包含建立连接时所使用用户名,如果没有用户名,可以不设置
Password:可选,字符串,包含建立时所使用的密码。如果没有密码,可以不设置
Option:可选,决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回,
该值可以是如下两个常量:adConnectUnsepecified(默认值,同步)和adAsyncConnect(异步)
Option,还有一种解释:
adModeUnknown:缺省。当前的许可权未设置
adModeRead:只读
adModeWrite:只写
adModeReadWrite:可以读写
adModeShareDenyRead:阻止其它Connection对象以读权限打开连接
adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接
adModeShareExclusive:阻止其它Connection对象以读写权限打开连接
adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接
3.ConnectionTimeout属性:该属性指示在终止尝试和产生错误前建立连接期间所等待的时间。该属性值为长整型数,单位s,默认值为15。如果设为0,则ADO无限等待直到打开。需要在Open之前调用。
m_pConnection->ConnectionTimeout = 5;///设置超时时间为5秒
4.State属性:指明当前Connection对象的状态,0表示关闭,1表示已经打开,我们可以通过读取这个属性来作相应的处理,例如:
1 if(m_pConnection->State)
2 m_pConnection->Close(); ///如果已经打开了连接则关闭它
_RecordsetPtr Connection15::Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options )5.Execute方法:函数原型
其中CommandText是命令字串,通常是SQL命令。参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一:adCmdText表明CommandText是文本命令;adCmdTable表明CommandText是一个表名;adCmdProc表明CommandText是一个存储过程;adCmdUnknown表明CommandText内容未知。Execute()函数执行完后返回一个指向记录集的指针
6.Close方法:用来关闭到数据源的连接,访问数据库完成后,关闭连接,释放有关联的系统资源。关闭对象并不代表将它从内存中删掉,可以更改它的属性设置然后再次打开它。
数据库建立连接实例:
//连接对象智能指针
_ConnectionPtr m_pConnection;
//实例化连接对象
m_pConnection.CreateInstance(__uuidof(Connection));
//设置连接串属性为UDL文件
m_pConnection->ConnectionString="File Name=my_data1.udl";
//设置等待连接打开的时间为20s
m_pConnection->ConnectionTimeout=20;
//利用Open方法建立与数据源的连接
m_pConnection->Open("","","",adConnectUnspecified);
注意:
1.Recordset对象和Command对象使用Open方法的第二个参数要用到_ConnectionPtr.GetInterfacePtr()函数返回值
2.执行Execute方法。m_pConnectionPtr->Execute(_bstr_t(sql),&RecordsAffected,adCmdText);其中RecordsAffected为_variant_t对象