vs C++利用ado连接sqlserver2008实现一个查询功能

来源:互联网 发布:阿里云对普通人的用处 编辑:程序博客网 时间:2024/05/30 04:40

前段时间,正在学习怎样利用ado进行对sqlserver和oracle两种数据库进行连接,并进行简单的查询功能,当然重要的是进行连接的步骤和思想,下面进行一下说明:楼主只是在sqlserver2008上进行了实验,过几天在去实验一下oracle数据库。

想用过ado的各位都会知道在stdafx.h中的头文件中加上这么一句代码:#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF") (这句代码是一行的,分行的话就要使用连接符哦!)这里说一下no_namespace,看字面就知道说明是没有命名空间,说明是全局标识,打个比方说一个大学里有两个名字是一样的,比方说都叫李三,这是如果不说明是哪个学院哪个系的哪个班的李三,别人就不知道你叫的是哪个李三,这是 就得加上前缀来区别,而no_namespace就不用这么麻烦,这里给A学院B系C班的李三加上这个,那么以后无论谁去叫李三,都会认为是叫A学院B系C班的李三,恩就是这么个意思,而rename("EOF","rsEOF")就是给EOF进行了重命名,因为文件的结束标志也是EOF,为了不搞错,就进行了重命名,命名为“rsEOF”,在stdafx.h头文件中加上了这么句代码之后,可以进行一次编译看是否通过,当然基本上是可以通过的。这句代码是要加stdafx.h中比较靠后的位置。

这里利用简单的两个简单的控件说一下,新建一个MFC,在上面添加一个LIST BOX和一个按钮并命名为查询”,在“查询”按钮上双击进入生成的函数中编写代码代码如下:

/*OLEDB是基于COM技术编写的,而ado又是基于OLEDB基础之上,它是一个OLEDB的用户程序,ado本身也是一个com组件,而我们在访问COM组件的时候,需要先初始化一个COM库,初始化的函数利用CoInitialize(LPVOID pvReserved)这个参数是一个保留参数,因此将其设置为NULL就可以了,访问完之后,可以利用CoUninitialize()来卸载COM库*/

   CoInitialize(NULL);    //初始化COM库
   _ConnectionPtr pConn(_uuidof(Connection));//智能指针类定义的对象
   _RecordsetPtr rst(_uuidof(Recordset));

   pConn->ConnectionString="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;   Initial   Catalog=bookstore";//连接字串(最后一个是数据库的名称)(连接字串可以用vb获得,具体方法见我的另一个博客
   pConn->Open("","","",adConnectUnspecified);//open函数可以参照msdn

   rst=pConn->Execute("select * from book",NULL,adCmdText);

/*adCmdText:命令文本的类型(如果使用Recordset智能指针的话可以将此行代码改为:rst->Open("select * from book",_variant_t((IDispatch*)pConn),adOpenDynamic,adLockOptimistic,adCmdText);  )*/
   while (!rst->rsEOF)
   {
       ((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
           (_bstr_t)rst->GetCollect("bookname"));
       rst->MoveNext();
   }
   rst->Close();
   pConn->Close();
  // rst->Release();
  // pConn->Release();
   CoUninitialize();


运行结果

http://img.blog.csdn.net/20140804161126536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanhxanh6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" _xhe_src="http://img.blog.csdn.net/20140804161126536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanhxanh6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"/>

0 0
原创粉丝点击