vs C++利用ado连接sqlserver2008实现一个查询功能
2014-08-04 15:00
190 查看
前段时间,正在学习怎样利用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();
运行结果
https://img-blog.csdn.net/20140804161126536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanhxanh6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" _xhe_src="https://img-blog.csdn.net/20140804161126536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanhxanh6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"/>
我想用过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();
运行结果
https://img-blog.csdn.net/20140804161126536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanhxanh6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" _xhe_src="https://img-blog.csdn.net/20140804161126536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanhxanh6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"/>
相关文章推荐
- ADO.Net实现非连接的简单分页方法(DataAdapter.Fill重载中的一个).
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 利用模板类编写一个程序,实现双向链表的插入、删除、查找、显示的功能。
- ADO带密码的数据连接、查询一个记录集、执行一SQL语句
- 关于ADO.NET,只须一个连接,一条SQL语句,轻松实现增删改查
- ADO.Net实现非连接的简单分页方法(DataAdapter.Fill重载中的一个).
- 想在VS.Net 中实现一个UltraEdit中的小功能始终没有实现!
- [VB.NET]利用vb.net创建一个完全可编辑的DataGrid,从而实现操作Access数据库进行增,删,改的功能,前提是不用任何其他的Button
- ADO.NET的一个帮助类库,只须一个连接,一条SQL语句,轻松实现数据库的查旬,再加一个object 轻松实现数据库的增删改
- 利用MySQL的一个特性实现MySQL查询结果的分页显示
- C#中利用ADO.NET连接和查询SQL数据库
- [数据库]一个利用触发器(trigger)实现数据库表的审计功能(audit)的例子--针对ms sql实现
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 利用MySQL的一个特性实现MySQL查询结果的分页显示
- ADO的一次开发实践(vc通过ADO连接access数据库做的一个多功能查询系统)
- 一个实现查询功能的asp.net控件
- 利用javabean轻松实现对数据库的连接、查询以及增删改!------使用范例
- 利用.Net反射机制实现一个“实体数据异同比较”功能!
- C#ADO连接修改Paradox表时“操作必须使用一个可更新的查询”错误的处理办法
- 利用javabean轻松实现对数据库的连接、查询以及增删改