博文

vc数据库编程-mfc odbc(2007-08-28 17:25:00)

摘要:1.连接数据库
CDatabase conn;
conn.OpenEx(_T("DSN=bbodbc")); 2.执行更新 conn.ExecuteSQL(updateSQL); 3.CRecordset初始化 rst = new CRecordset(&conn);  //指针
或者下面的也可以
rst.m_pDatabase = &conn; //针对非指针 4.执行查询 rst->Open(AFX_DB_USE_DEFAULT_TYPE, selectSQL); 5.处理记录集  CRecordset *rst = bb.executeSelect(_T("select * from userinfo"));  try {
  int iListIndex = 0;
  while (!rst->IsEOF())
  {
   CString strID, strName;
   rst->GetFieldValue("userid", strID);
   rst->GetFieldValue("username", strName);
   //MessageBox(strFiledValue);
   m_listbox.AddString(strName);
   m_list2.InsertItem(iListIndex, strID);
   m_list2.SetItemText(iListIndex, 1, strName);
   iListIndex++;
   rst->MoveNext();
  }
  rst->Close();
 }
 ......

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

vc odbc使用总结(2007-08-28 17:24:00)

摘要:1.打开数据库 CDatabase database;
database.OpenEx( _T( "DSN=zhuxue" ),CDatabase::noOdbcDialog);//zhuxue为数据源名称 2.关联记录集 CRecordset recset(&database); 3.查询记录 CString sSql1="";
 sSql1 = "SELECT * FROM tablename" ;   
  recset.Open(CRecordset::forwardOnly, sSql1, CRecordset::readOnly); int ti=0;
CDBVariant var;//var可以转换为其他类型的值  while (!recset.IsEOF())
        {
   //读取Excel内部数值
   recset.GetFieldValue("id",var);
   jiangxiang[ti].id=var.m_iVal;
   recset.GetFieldValue("name", jiangxiang[ti].name);
   ti++;
   recset.MoveNext();
  } recset.Close();//关闭记录集 4.执行sql语句 CString sSql="";
 sSql+="delete * from 院系审核";//清空表
 database.ExecuteSQL(sSql); sSql也可以为Insert ,Update等语句 5.读取字段名  sSql = "SELECT * FROM Sheet1" ;    //读取的文件有Sheet1表的定义,或为本程序生成的表.  &......

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

VC++下ODBC的编程(转载)(2007-08-28 17:23:00)

摘要: 标  题: VC++下ODBC的编程
发信站: 控制台 (Mon Mar 23 19:17:49 1998), 转信

VC++下ODBC的编程

作者:姜青松  王洋  刘强

   
    摘要本文在介绍了ODBC(开放性数据库连接,Open  DataBase  Co
nnectivity)运行机制的基础上,着重讨论了VisualC++2.0下利用ODBC
API及利用MFC进行ODBC编程的两种方法.
    关键词ODBC,SQL,数据源,文档/视图结构,DBMS
    一、ODBC的发展背景
    在传统的数据库领域,数据库应用程序通常是指在特定的数据库
管理系统(DBMS)的支持下,用特定的内嵌式结构化查询语言(SQL)开发
的.这样的数据库应用程序存在如下的缺点:(1)它往往需要一个庞大
的数据库管理系统的支持,对用户的软、硬件要求高;(2)它通常只能
处理一种格式的数据库文件.
    与传统的数据库应用程序的实现方法相比,Microsoft的开放性数
据库连接(ODBC)标准则提供了一种新的途径:它建立了一组规范,并提
供了一组高层应用程序调用接口和一套基于动态链接库(DLL)的运行
支持环境.用这样一组接口规范开发的应用程序,使用标准的函数和结
构化查询语言(SQL)对数据库进行操作,不必关心"数据源"(DataSourc
e)来自何种数据库管理系统DBMS,所有的数据库的底层操作都是由相
应的ODBC驱动程序(ODBCDriver)完成.只要有了相应的ODBC驱动程序,
应用程序处理的对象-数据源就可以非常广泛,既可以是本机的某种数
据库格式的文件,如FoxPro的*.dbf文件,也可以是远程数据库文件,如
MicrosoftSQLServer等.
    二、ODBC的运行机制
 &n......

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

ADO第一次亲密接触 -- ADO开发实践之一(2007-08-27 15:33:00)

摘要:http://www.vckbase.com/document/viewdoc/?id=215 ADO第一次亲密接触 -- ADO开发实践之一
作者:浙江省温岭市电信公司 王骏
一、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") ......

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

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

摘要: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文件中加入下面语句来实现:

#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
  其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类, #import语句实际上相当于执行了API涵数LoadTypeLib()。#import语句会在工程可执行程序输出目录中产生两个文件,分别为 *.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装......

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

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

摘要:下一页 1 2 3 
  ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题,如何掌握ADO这种数据库访问技术ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序(AdoRWAccess),这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示:

·Access数据库开发技巧
·Access数据库技术(51)
·VC++中使用ADO方式操作ACCESS数据库
·基于Access数据库的抽奖系统设计
·配置,链接access数据库
·用MFC ODBC操作Access数据库
·ASP.NET的ACCESS数据库操作类
·VB6.0 中连接加密的Access数据库
·九法防止ACCESS数据库被下载的
·Access数据库技术(33)

  在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。

  下面让我们看看ADO数据库访问技术使用的基本步骤及方法:

  首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用 #import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现:

#import "c:\program files\common files\system\ado\msado15.dll"......

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

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属性,该属性用来引......

阅读全文(4875) | 评论: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_......

阅读全文(4365) | 评论: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......

阅读全文(3667) | 评论: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版本。读......

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