![]() |
【转帖】[转帖]数据库的使用问题
[转帖]数据库的使用问题
[转帖]数据库的使用问题 关于数据库的使用 1994年美国的制造企业80%以上使用了marpii ,在中国,目前还不到1%的制造企业使用。 可以预见,对于中国制造行业,在cad\cam建设的基础上,管理系统在近几年会有长足的发展,这其中离不开数据库的使用; 相对于过去的使用文本文件或其它格式化文件进行数据存贮、查询等方式而言,数据库编程技术有编程效率高(数据库技术的一行代码可以顶一大段程序)、运行效率高、运行质量高等优点。 市场越来越成熟、竞争越来越激烈,作为软件公司或软件人,必须为用户提供高度智能化(在各种计算过程中应当智能地使用各种数据库)、同其它软件的高度可集成性(通过使用数据库这种放之四海而皆准的方式及使用组件技术)的软件。当然,软件本身所有的其它性能也是不能丢的。 一、ado简介 ado(activex data object)是microsoft数据库应用程序开发的新接口,是建立在ole db之上的高层数据库访问技术,请不必为此担心,即使你对ole db,com不了解也能轻松对付ado,因为它非常简单易用,甚至比你以往所接触的odbc api、dao、rdo都要容易使用,并不失灵活性。本文将详细地介绍在vc下如何使用ado来进行数据库应用程序开发,并给出示例代码。 本文示例代码 二、基本流程 万事开头难,任何一种新技术对于初学者来说最重要的还是“入门”,掌握其要点。让我们来看看ado数据库开发的基本流程吧! (1)初始化com库,引入ado库定义文件 (2)用connection对象连接数据库 (3)利用建立好的连接,通过connection、command对象执行sql命令,或利用recordset对象取得结果记录集进行查询、处理。 (4)使用完毕后关闭连接释放对象。 准备工作: 为了大家都能测试本文提供的例子,我们采用access数据库,您也可以直接在我们提供的示例代码中找到这个test.mdb。 下面我们将详细介绍上述步骤并给出相关代码。 【1】com库的初始化 我们可以使用afxoleinit()来初始化com库,这项工作通常在cwinapp::initinstance()的重载函数中完成,请看如下代码: bool cadotest1app::initinstance() { afxoleinit(); ...... 【2】用#import指令引入ado类型库 我们在stdafx.h中加入如下语句:(stdafx.h这个文件哪里可以找到?你可以在fileview中的header files里找到) #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("eof","adoeof") 这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个c++头文件来定义ado库。 几点说明: (1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改 (2) 在编译的时候肯能会出现如下警告,对此微软在msdn中作了说明,并建议我们不要理会这个警告。 msado15.tlh(405) : warning c4146: unary minus operator applied to unsigned type, result still unsigned 【3】创建connection对象并连接数据库 首先我们需要添加一个指向connection对象的指针: _connectionptr m_pconnection; 下面的代码演示了如何创建connection对象实例及如何连接数据库并进行异常捕捉。 bool cadotest1dlg::oninitdialog() { cdialog::oninitdialog(); hresult hr; try { hr = m_pconnection.createinstance("adodb.connection");///创建connection对象 if(succeeded(hr)) { hr = m_pconnection->open("provider=microsoft.jet.oledb.4.0;data source=test.mdb","","",admodeunknown);///连接数据库 ///上面一句中连接字串中的provider是针对access 不错 好东东,留名收藏 我是核潜艇 不错 _connectionptr这个我用的时候为什么编译时说没定义呢?这个东东在哪个文件中定义的? 为什么在arx工程中,如果在对话框类中声明_connectionptr程序没出错,如果在自己建立的一般c++类中声明就出错? 准备看下一篇。 好东西,我做个记号吧 i love sky |
| 所有的时间均为北京时间。 现在的时间是 11:52 PM. |