首页 > 其他 > 详细

智能指针

时间:2014-02-21 12:36:17      阅读:390      评论:0      收藏:0      [点我收藏+]



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

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

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

stdafx.h   中加入

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") 
中才能引用这三个指针.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void <span style="color: rgb(136, 136, 136); background-color: rgb(255, 255, 255);">CSjtestDlg</span>::OninitADOConn(void)
{
    try{
            //创建连接对象实例
            m_pConnection.CreateInstance("ADODB.Connection");
            //设置连接字符串
            CString strConnect=_T("DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=shujuku.mdb;");
            //使用 Open 方法连接数据库
            m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
    }
    catch(_com_error e)
    {
            AfxMessageBox(_T("连接数据失败,请检查数据库路径是否正确!"));
    }
}
 
 
void <span style="background-color: rgb(255, 255, 255);">CSjtestDlg</span>::ExitConnect(void)
{
     if(m_pRecordset!=NULL)
              m_pRecordset->Close();
     m_pConnection->Close();
}

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
m_Grid.InsertColumn(0,_T("员工编号"),LVCFMT_LEFT,80,0);
m_Grid.InsertColumn(1,_T("员工姓名"),LVCFMT_LEFT,80,1);
m_Grid.InsertColumn(2,_T("所属部门"),LVCFMT_LEFT,80,2);
m_Grid.InsertColumn(3,_T("基本工资"),LVCFMT_LEFT,80,3);
//连接数据库
OninitADOConn() ;
//设置查询字符串
_bstr_t bstrSQL = "select * from employees order by 员工编号 desc";
//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));//该句也可以使用    m_pRecordset.CreateInstance(“ADODB.Recordset”);代替打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
       adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
       m_Grid.InsertItem(0,_T(""));
       m_Grid.SetItemText(0,0,(_bstr_t)m_pRecordset->GetCollect(_T("员工编号")));
       m_Grid.SetItemText(0,1,(_bstr_t)m_pRecordset->GetCollect(_T("员工姓名")));
       m_Grid.SetItemText(0,2,(_bstr_t)m_pRecordset->GetCollect(_T("所属部门")));
       m_Grid.SetItemText(0,3,(_bstr_t)m_pRecordset->GetCollect(_T("基本工资")));
       //将记录集指针移动到下一条记录
       m_pRecordset->MoveNext();
}
 
//断开数据库连接
ExitConnect();

  

bubuko.com,布布扣

智能指针

原文:http://www.cnblogs.com/liyangtianmen/p/3558545.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!