ADO访问数据库的方法

现将ADO访问数据库的基本步骤和方法介绍如下:

第一步:在Stdafx.h中添加

#import  "c:/program files/common files/system/ado/msado15.dll"  no_namespace rename("EOF","AdoEOF")

第二步:初始化COM环境

在合适的地方添加CoInitialize(NULL);CoUninitialize();一般来说,对于MFC应用程序最好是将它们分别放在WinappInitInstance()ExitInstance()这两各函数中。而对于COM组件来说,可以略去这一步

第三步:声明对象并建立连接

       _ConnectionPtr pConn;//声明一个Connection对象

       _RecordsetPtr pSet;//声明一个Recordset对象

 

CString szConntionString =

            "Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=DB_NAME;Data Source=DB_SERVER";

  // 连接字符串中的用户名和密码,可以放到Connection对象的Open函数中的第二个和第

  // 三个参数中;

 // 技巧:可以直接建一个空的udl文件,配置好后,用文本文件打开就可以看到连接字符串了

       try

       {

              pConn.CreateInstance(__uuidof(Connection));

              pConn->Open ((_bstr_t)szConntionString,"","",-1);

       }

       catch(_com_error &e)

       {

              //do something you want

       }

       catch(...)

       {

              //do something you want

       }

第四步:访问数据库

       try

       {

              pSet.CreateInstance(__uuidof(Recordset));

              pSet->Open("SELECT * FROM titles",

                     pConn.GetInterfacePtr(),

                     adOpenDynamic,

                     adLockOptimistic,

                     adCmdText);

              CString szDispInfo;

              _variant_t VValue;

              if(!pSet->AdoEOF)//如果像遍历整个数据集请用while,现只访问第一条记录

              {

                     VValue = pSet->GetCollect("title_id");//取其中的一个字段的值

                     szDispInfo = VValue.bstrVal;//有关_variant_t的说明请参考MSDN

              }

              pSet->Close();

       }

       catch(_com_error &e)

       {

              //do something you want

       }

       catch(...)

       {

              //do something you want

       }

 

//上面的这些步骤是采用ADO进行数据库访问的最基本的方法。

 

另外,得到结果集中某个字段的值有如下几种方法:

_variant_t vValue;

CString szFieldValue;

1. vValue = pSet->GetCollect("title_id");

or 2. vValue = pSet->Fields->GetItem("title_id")->Value;

or 3. vValue = pSet->Fields->Item["title_id"]->Value;

 szFieldValue = vValue.bstrVal;

 

当然,szFieldValue也可以是其他类型的变量,赋值时只要取vValue不同的成员变量就可以了

注意:Fields是结果集中当前记录的列的集合;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值