博文
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();
}
 ......
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表的定义,或为本程序生成的表. &......
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......
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")
......
*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等进行声明,创建一系列包装......
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"......
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属性,该属性用来引......
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_......
使用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......
什么是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版本。读......