博文

VC6.0中使用ADO操作Access数据库(2007-08-27 10:43:00)

摘要:由于我的程序只是简单的储存网址和标题,Access小而简单,所以就选择Access作为本小软件的数据库,并采用ADO访问数据库。
以下数据库内容摘自孙鑫老师的”VC20讲第20课数据库访问的PPT”
数据库访问技术
1. ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。 ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。 2. DAO(Data Access Object),数据访问对象。DAO就是一组Microsoft Access/Jet数据库引擎的COM自动化接口。 DAO不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。 3. RDO(Remote Data Object),远程数据对象。由于RDO直接调用ODBC API(而不是像DAO那样通过Jet引擎),所以,可以为使用关系数据库的应用程序提供更好的性能。 4. OLE DB,对象链接与嵌入数据库。 OLE DB在两个方面对ODBC进行了扩展。首先, OLE DB提供了一个数据库编程的COM接口;第二, OLE DB提供了一个可用于关系型和非关系型数据源的接口。 OLE DB的两个基本结构是OLE DB提供程序(Provider)和OLE DB用户程序(Consumer)。 5. ADO(ActiveX Data Object),ActiveX数据对象,它建立在OLE DB之上。ADO是一个OLE DB用户程序。使用ADO的应用程序都要间接地使用OLE DB。ADO简化了OLE DB,提供了对自动化的支持,使得像VBScript这样的脚本语言也能够使用ADO访问数据库。 ADO的三个核心对象
1.Connection对象
    Connection对象表示了到数据库的连接,它管理应用程序和数据库之间的通信。 Recordset和Command对象都有一个ActiveConnection属性,该属性用来引......

阅读全文(4608) | 评论:0

baidu记录VC访问ACCESS(2007-08-27 10:40:00)

摘要: VC调用ACCESS数据库,高分求助 悬赏分:100 - 解决时间:2006-12-16 13:55 刚开始学习VC,学编程刚入门,很多都不懂,就下载了一个源代码来修改,源代码经简单调试后可以运行,可以调用ACCESS数据库,但是数据库是97版的。我想把数据库的字段增多,改为我希望的样子,也就是添加了10个名目。只好转换为2003后修改再改回97保存。VC的程序里面,所有原来涉及的字段我都修改了,并在对话框里也加了TEXT,命名为IDC-TEL、IDC-FAX等,现在调试完成后,可执行文件也生成了,主程序有时候又可以运行,但是读取MDB就弹出严重错误,然后只能关闭。有时候又不能运行,出错“DEBUG ASSERTION FAILED!”和终止忽略调试,我该怎么办呢?

有高手愿意指导,或者帮我调就感谢了 提问者: 诸葛亮弹钢琴 - 见习魔法师 二级 最佳答案 1:针对问题解决问题。
将库从XP转到2003,是没有问题的,在转回去也可以。但是从97转到2003就有问题了,起初我也遇到类似的问题。你说的是出错现象,我们无法猜想出你的程序

哪里有问题,出现bug。建议你在对数据库操作的时候都加上断言(assert),
参考资料 http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconassert.asp
或者在对数据库操作的时候都加上错误处理(try{...}catch(...){...}),这样就可以知道错误出现在哪里,例如:
BOOL CODBCHandle::SetConnection(CString strDSN, CString strUID, CString strPWD)
{
CString str;
str.Format("DSN=%s;UID=%s;PWD=%s", strDSN, strUID, strPWD);
BOOL bStatus = FALSE; //数据库是否成功打开
m_database.SetLoginTimeout(3); //连接超时属性
try
{
if(!m_......

阅读全文(4028) | 评论:0

使用vc ADO访问access数据库统一模版(2007-08-27 10:37:00)

摘要:  直接复制过去修改就可以使用.要读读程序理解一下. //======================================================= _ConnectionPtr m_pConnection; //定义连接
 CoInitialize(NULL);//初始化
 m_pConnection.CreateInstance(__uuidof(Connection));
     try               
     {   
         // 打开本地Access库db1.mdb
         m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data       Source=db1.mdb","","",adModeUnknown);//注意mdb1.mdb的保存位置
       
     }
 catch(_com_error e)
 {
 AfxMessageBox("connect error");
 }
 _RecordsetPtr m_pRecordset;
 m_pRecordset.CreateInstance(__uuidof(Recordset));  try
 {   
  m_pRec......

阅读全文(3385) | 评论:3

什么是DAO(2007-08-27 09:57:00)

摘要:发信人: siskin (siskin.dhs.org), 信区: Database 标 题: DAO 发信站: 北大未名站 (2002年05月05日18:02:21 星期天), 转信 10.8.1 什么是DAO   DAO(Database Access Object)使用Microsoft Jet数据库引擎来访问数据库。 Microsoft Jet为象Access和Visual Basic这样的产品提供了数据引擎。   与ODBC一样,DAO提供了一组API供编程使用。MFC也提供了一组DAO类,封装了 底层的API,从而大大简化了程序的开发。利用MFC的DAO类,用户可以编写独立于 DBMS的应用程序。   DAO是从Visual C++4.0版开始引入的。一般地讲,DAO类提供了比ODBC类更广 泛的支持。一方面,只要有ODBC驱动程序,使用Microsoft Jet的DAO就可以访问 ODBC数据源。另一方面,由于DAO是基于Microsoft Jet引擎的,因而在访问 Access数据库(即*.MDB文件)时具有很好的性能。 10.8.2 DAO和ODBC的相似之处 DAO类与ODBC类相比具有很多相似之处,这主要有下面几点: 二者都支持对各种ODBC数据源的访问。虽然二者使用的数据引擎不同,但都可以满 足用户编写独立于DBMS的应用程序的要求。 DAO提供了与ODBC功能相似的MFC类。例如,DAO的CDaoDatabase类对应ODBC的 CDatabase类,CDaoRecordset对应CRecordset,CDaoRecordView对应CRecordView ,CDaoException对应CDBException。这些对应的类功能相似,它们的大部分成员 函数都是相同的。 AppWizard和ClassWizard对使用DAO和ODBC对象的应用程序提供了类似的支持。   由于DAO和ODBC类的许多方面都比较相似,因此只要用户掌握了ODBC,就很容 易学会使用DAO。实际上,用户可以很轻松地把数据库应用程序从ODBC移植到DAO。   Visual C++随盘提供了一个名为DaoEnrol的例子,该例实际上是Enroll的一个 DAO版本。读......

阅读全文(7918) | 评论:1

Microsoft ADO 程序员参考(2007-08-27 09:36:00)

摘要:http://www.eduboss.com/pages/ado/?url=/pages/ado/mdprobof.htm   Microsoft ADO 程序员参考 目录 Microsoft® ActiveX® Data Objects (ADO) 使您能够编写通过 OLE DB 提供者对在数据库服务器中的数据进行访问和操作的应用程序。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO 支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。 ADO 同时具有远程数据服务 (RDS) 功能,通过 RDS 可以在一次往返过程中实现将数据从服务器移动到客户端应用程序或 Web 页、在客户端对数据进行处理然后将更新结果返回服务器的操作。RDS 以前的版本是 Microsoft Remote Data Service 1.5,现在,RDS 已经与 ADO 编程模型合并,以便简化客户端数据的远程操作。 有关 ADO 及 RDS 如何与之集成的详细信息,请参阅 ADO 入门。......

阅读全文(1807) | 评论:0

直接通过ADO操作Access数据库(2007-08-27 09:27:00)

摘要: 直接通过ADO操作Access数据库


作者/徐景周 下载源代码

    我在《VC知识库在线杂志》第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读、写Excel表格文件”和“直接通过DAO读、写Access文件”,先后给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题:如何掌握ADO这种数据库访问技术。ADO 的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序—— AdoRWAccess,这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示:



在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。
下面让我们看看ADO数据库访问技术使用的基本步骤及方法:
    首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中......

阅读全文(1815) | 评论:0

在Visual C++中用ADO进行数据库编程(2007-08-27 09:23:00)

摘要: 在Visual C++中用ADO进行数据库编程


由 wnchg 整理


 
 1. 生成应用程序框架并初始化OLE/COM库环境

  创建一个标准的MFC AppWizard(exe)应用程序,然后在使用ADO数据库的InitInstance函数中初始化OLE/COM库(因为ADO库是一个COM DLL库)。
本例为:  BOOL CAdotestDlg::OnInitDialog()  { ::CoInitialize(NULL); //初始化OLE/COM库环境 } 程序最后要调用 ::CoUninitialize();//释放程序占用的COM 资源。
另外: m_pRecordset->Close(); 注意!!!不要多次关闭!!!!!!!!!!!! m_pConnection->Close(); m_pRecordset = NULL; m_pConnection = NULL;  2. 引入ADO库文件

  使用ADO前必须在工程的stdafx.h文件最后用直接引入符号#import引入ADO库文件,以使编译器能正确编译。代码如下:
#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
   ADO类的定义是作为一种资源存储在ADO DLL(msado15.dll)中,在其内部称为类型库。类型库描述了自治接口,以及C++使用的COM vtable接口。当使用#import指令时,在运行时Visual C++需要从ADO DLL中读取这个类型库,并以此创建一组C++头文件。这些头文件具有.tli 和.tlh扩展名,读者可以在项目的目录下找到这两个文件。在C++程序代码中调用的ADO类要在这些文件中定义。
   程序的第三行指示ADO对象不使用名称空间。在有些应用程序中,由于应用程序中的对象与ADO中的对象之间可能会出现命名冲突,所以有必要使用名称空间。如果要使用名称空间,则可把第......

阅读全文(2154) | 评论:0

Visual C++ ADO数据库编程入门(2007-08-24 16:55:00)

摘要:摘要 本文简要介绍了在VC++ 6.0中使用 ADO进行客户端数据库编程的基本步骤,以及常见问题的解决方法,可供入门级的参考之用。 http://www.yesky.com/413/1839913.shtml         共8页。 1 2 3 4 5 6 7 8 8 :......

阅读全文(2508) | 评论:0