VC++6.0入门第九章连接数据库

合集下载

VC++6.0中用ODBC连接mysql数据库

VC++6.0中用ODBC连接mysql数据库

下图是程序的最终效果,包含了数据的显示,添加,修改,删除这几项数据库操作的常用功能。

我的调试环境是xp,mysql版本是mysql4.0.231.安装Mysql的ODBC驱动从上下载驱动程序地址:/downloads/connector/odbc/3.51.html#win32 我是下载的Windows ZIP/Setup.EXE下载到本机之后从zip包中解压出setup.exe文件,双击安装,没什么可说的,完全的傻瓜式安装2.设置ODBC数据源配置MySQL的ODBC数据源有两种方法第一种:手工设置比较麻烦,但是确是比较安全的办法。

步骤如下:开始 -> 控制面板 -> 管理工具 -> 数据源(ODBC),双击数据源(ODBC)之后会出来如下的界面点击右上角的"添加"按钮之后会出现如下的界面可以看到,我们刚才安装的驱动程序已经出现在列表中了,选中它,然后单击完成,此时会出来下面的界面按上图所示,填写好各项连接所需要的信息点击“Test”可以进行测试,如果出现sucessful字样就表示成功了我解释一下填写的信息:Data Source Name:缩写就是DSN,中文翻译过来就是数据源名称,就是给数据源取个名,为了安全还是取英文名吧,省得出现意外。

Description:描述,可填可不填,我比较懒,就没填,想填也行,就是描述一下这个数据源是哪家的,干啥用的等等,随便吧Server:服务器,不能省,我填的是localhost,如果你有远程主机,不妨试试填上远程主机的IP地址,我没试过,不清楚User:用户名,我本地数据库用的是root,你们如果有别的就根据自己的情况填吧Password:密码,我没设置密码,有则填之,没有就留空Database:数据库,这是一个listbox,可以自己填,也可以从下拉列表中选,如果你前面的Server,User,Password都正确的话,下拉列表中会出来可选的数据库,这个就是我们要连接的数据库资源。

VC6.0 下MFC程序与MySql数据库连接的设

VC6.0 下MFC程序与MySql数据库连接的设

四、VC编程
MYSQL mysql; //数据库连接句柄
mysql_init (&mysql);if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))
{//mydb为你所创建的数据库,3306为端口号,可自行设定 AfxMessageBox("数据库连接失败"); return FALSE;}
(2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。Lib目录下还有debug和opt两个目录,建议选debug。(我的是D:/Program Files/MySQL/MySQL Server 5.0/lib/debug)。
(3)实现删除功能
CString strSQL;strSQL.Format("delete from mytable where username=/'%s/'",str_PreName);//必须要有/'/'if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){ AfxMessageBox(必须要有/'/'if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){ AfxMessageBox("增添失败"); }

visualfoxpro6.0数据库上机教程

visualfoxpro6.0数据库上机教程
数据类型
VFP6.0支持多种数据类型,如字符型、数值型、日期型等,了解这些数据类型的特点和适用场景,有助于更好地设计数据库。
表结构设计
表是数据库中最基本的数据组织形式,掌握如何设计表结构,包括字段名、数据类型、长度等,是进行数据库设计的关键。
数据库设计
按照代码的先后顺序执行,是最基本的程序流程控制方式。
VFP6.0数据库系统在财务管理中的应用
物流计划管理
物流跟踪管理
物流数据分析
VFP6.0数据库系统在物流管理中的应用
VFP6.0数据库系统可以用于记录和管理企业的物流计划,包括运输计划、仓储计划等,实现物流计划的优化和自动化。
VFP6.0数据库系统可以用于实时跟踪和管理企业的物流状态,包括货物运输情况、货物到达时间等,提高物流管理的透明度和效率。
索引的创建与使用
查询的创建与执行
SQL语句的使用
通过查询获取符合特定条件的数据记录。
使用SQL语句进行数据的增删改查操作。
通过索引快速查找数据表中的记录。
04
CHAPTER
VFP6.0数据库系统的程序设计
VFP6.0数据库系统的程序设计基础
使用VFP6.0进行数据库设计,需要了解数据库的基本概念,如数据表、字段、记录等,以及如何创建和管理数据库对象。
字符型
逻辑型
用于存储文本数据,如字符串。
用于存储布尔值,即真或假。
数值型
日期型
备注型
用于存储数值数据,包括整数和小数。
用于存储日期和时间数据。
用于存储较长的文本数据。
关系运算符
如等于、不等于、大于、小于等。
算术运算符
如加、减、乘、除等。
逻辑运算符
如与、或、非等。

VC6.0连接MySQL大数据库

VC6.0连接MySQL大数据库

电力学院嵌入式系统应用安全课程论文题目: VC6.0连接MySQL数据库姓名:学号: 201132班级: 2011班院系:计算机科学与技术学院专业年级:信息安全2011级2014年6月8日通过VC开发MySQL数据库应用软件有多种方式:一、通过MyODBC界面二、通过Connector/C++l界面三、通过MySQL C API界面四、第三方封装的MySQL类在经过反复比较,我还是选择了MySQL C API方式来进行MySQL的开发。

在VC中使用MySQL的步骤如下:一、MYSQL的准备工作1.下载MySQL的服务器/客户端安装包我的开发环境是Windows,所以我下载的是MySQL for Windows mysql-5.6.19-win322.安装MySQL服务器/客户端包Cmd下进入mysql-5.6.19-win32 安装目录,我的安装目录是D:\mysql-5.6.19-win32\bin界面输入安装语句 sqld-unstall。

成功安装MYSQL3.运行MYSQL ,建立测试数据库及表启动MYSQL语句创建数据库语句创建表语句创建表中数据4.查看建立的表格二、VC设置准备打开vc++6.0,TOOLS->OPTIONS->DIRECTORIES,在其Include files添加MySQL 的include路径。

切换下拉框,选择Library files,添加MySQL的lib路径。

PROJECTS -->SETINGS-->LINK 在OBJECT/LIBARY MODULES 添加 libmysql.lib将MYSQL安装目录中的几个文件复制到VC工程文件夹中MySQL数据库安装之后在\MySQL \lib\opt目录下libmysql.liblibmysql.dll同时需要\MySQL\include目录下的几个文件:mysql_version.hmy_list.hmysql_.hmysql_time.hmysql.hmy_alloc.htypelib.h在VC的安装目录Microsoft Visual Studio\VC98\Lib下找到:WS2_32.LIB三、VC编程,建立工程WIN32 CONSOLE APPLICATION 代码#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql.h>#include <iostream>#pragma comment(lib,"libmysql.lib")//连接MysQL需要的库using namespace std;int main(){const char user[] = "root"; //usernameconst char pswd[] = ""; //passwordconst char host[] = "127.0.0.1"; //or"127.0.0.1"const char table[] ="testdb"; //databaseunsigned int port = 3306; //server portMYSQL myCont;MYSQL_RES *result;MYSQL_ROW sql_row;MYSQL_FIELD *fd;char column[32][32];int res;mysql_init(&myCont);if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0)){cout<<"connect succeed!"<<endl;mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文 res=mysql_query(&myCont,"select * from name_table");//查询if(!res){result=mysql_store_result(&myCont);//保存查询到的数据到resultif(result){int i,j;cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;for(i=0;fd=mysql_fetch_field(result);i++)//获取列名{strcpy(column[i],fd->name);}j=mysql_num_fields(result);for(i=0;i<j;i++){printf("%s\t",column[i]);}printf("\n");while(sql_row=mysql_fetch_row(result))//获取具体的数据{for(i=0;i<j;i++){printf("%s\n",sql_row[i]);}printf("\n");}}}else{cout<<"query sql failed!"<<endl;}}else{cout<<"connect failed!"<<endl;}if(result!=NULL) mysql_free_result(result);//释放结果资源mysql_close(&myCont);//断开连接return 0;}结果四、心得通过网络资料自学使用MY SQL连接vc的方法。

VC++连接数据库

VC++连接数据库

文档内容:ADO是目前在Windows环境中比较流行的客户端数据库编程技术。

ADO是建立在OLE DB 底层技术之上的高级编程接口,因而它兼具有强大的数据处理功能(处理各种不同类型的数据源、分布式的数据处理等等)和极其简单、易用的编程接口,因而得到了广泛的应用。

而且按微软公司的意图,OLE DB和ADO将逐步取代ODBC和DAO。

现在介绍ADO各种应用的文章和书籍有很多,本文着重站在初学者的角度,简要探讨一下在VC++中使用ADO编程时的一些问题。

我们希望阅读本文之前,您对ADO技术的基本原理有一些了解。

一、在VC++中使用ADO编程ADO实际上就是由一组Automation对象构成的组件,因此可以象使用其它任何Automation 对象一样使用ADO。

ADO中最重要的对象有三个:Connection、Command和Recordset,它们分别表示连接对象、命令对象和记录集对象。

如果您熟悉使用MFC中的ODBC类(CDatabase、CRecordset)编程,那么学习ADO编程就十分容易了。

使用ADO编程时可以采用以下三种方法之一:1、使用预处理指令#import#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \no_namespace rename("EOF", "EndOfFile")但要注意不能放在stdAfx.h文件的开头,而应该放在所有include指令的后面。

否则在编译时会出错。

程序在编译过程中,VC++会读出msado15.dll中的类型库信息,自动产生两个该类型库的头文件和实现文件msado15.tlh和msado15.tli(在您的Debug或Release目录下)。

在这两个文件里定义了ADO的所有对象和方法,以及一些枚举型的常量等。

我们的程序只要直接调用这些方法就行了,与使用MFC中的COleDispatchDriver类调用Automation对象十分类似。

VC6.0连接ACCESS数据库

VC6.0连接ACCESS数据库

VC6.0连接ACCESS数据库今天在网上看了很多有关VC连接数据库的例子,但是大部分都是给出了代码,但是没有很详细地讲解了如何连接数据库,这就是我为什么要写这篇文章,特别适合初学者,看这里你无需要懂得是什么意思,尽管跟着步骤一步一步走那么你就可以连接成功!已发表到/forpig博客中首先在VC++中建立一个基于对话框的工程(在这里取名为sjtest)1、在StdAfx.h头文件中导入msado15.dll文件。

(代码如下)#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace \rename("EOF","adoEOF")rename("BOF","adoBOF")2、在主窗口类声明两个变量。

(在CsjtestDlg.h中)代码:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;关于_ConnectionPtr 和_RecordsetPtr 两个智能指针具体作用网上很多,我不详述。

想了解的请读者自己查询,本文旨在为大家建立起数据库连接并且显示出来!3、在对话框中添加一个ListControl控件,并且将其属性中的Style设置如图将View设置成Report,Single selection,auto arrange no label wrap勾上!4、在CLASS WIZARD里面添加一个和LISTCONTROL想关联的变量m_Grid。

5、在CSjtestApp应用程序类中的初始化函数InitInstance()中初始化COM环境在上面添加:::CoInitialize(NULL);并在return之前释放:添加代码如下:::CoUninitialize();5、建立ADO连接数据库函数在主窗口类(CSjktestDlg)库中添加函数OnInitADOConn()如图:并在该函数添加如下代码:try{//创建连接对象实例m_pConnection.CreateInstance("ADODB.Connection");//设置连接字符串CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\ uid=;pwd=;DBQ=shujuku.mdb;";//使用Open方法连接数据库m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);catch(_com_error e){AfxMessageBox("连接数据失败,请检查数据库路径是否正确!");}在这里我的数据名字为shujuku.mdb,当然CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)}; uid=;pwd=;DBQ=shujuku.mdb;";也可以使用如下字符串连接CString strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shujuku.mdb;Persist Security Info=False";代替6、按照第五步那样建立关闭记录集和连接函数ExitConnect()并添加代码://关闭记录集和连接if(m_pRecordset!=NULL)m_pRecordset->Close();m_pConnection->Close();7、接着在初始化对话框中调用OnInitADOConn函数,已经获取数据库表中数据并显示在列表控件中。

Visual Basic 6.0绑定Access数据库教程

Visual Basic  6.0绑定Access数据库教程

End Sub
Private Sub Command2_Click() If conn.State = 0 Then
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\试验录入数据库.mdb;Persist Security Info=False"
End If
sql = "insert into [users]([username],[password]) values('" & Text1.Text & "','" & Text2.Text & "')"
Set rs = New ADODB.Recordset
录 入
rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic 'MsgBox "录入成功!"
sql = "select * from users" rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic Set MSHFlexGrid1.DataSource = rs
'表头 MSHFlexGrid1.TextMatrix(0, 0) = "唯一编号" MSHFlexGrid1.TextMatrix(0, 1) = "账号" MSHFlexGrid1.TextMatrix(0, 2) = "密码"

windows下c++连接mysql

windows下c++连接mysql

C++连接mysql 数据库环境:windows xp VC++6.0 mysql目的:实现建表,插入,检索,删表等常用功能。

VC6.0 的配置:菜单栏—》工具—》选项—》目录—》添加:C:\Program Files\MySQL\MySQL Server 6.0\includeC:\Program Files\MySQL\MySQL Server 6.0\lib\opt拷贝C:\Program Files\MySQL\MySQL Server 6.0\lib\opt下的libmysql.lib到C:\Program Files\Microsoft Visual Studio\VC98\Lib下写aa.cpp【注:一层层执行可以看到更好的效果】#include <winsock.h>#include <iostream>#include <string>#include <mysql.h>using namespace std;#pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "libmysql.lib")//单步执行,不想单步执行就注释掉#define STEPBYSTEPint main(){cout<<"****************************************"<<endl;#ifdef STEPBYSTEPsystem("pause");#endif//必备的一个数据结构MYSQL mydata;//初始化数据库if(0==mysql_library_init(0,NULL,NULL)){cout<<"mysql_library_init() succeed"<<endl;}else{cout<<"mysql_library_init() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//初始化数据结构if(NULL!=mysql_init(&mydata)){cout<<"mysql_init() succeed"<<endl;}else{cout<<"mysql_init() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//在连接数据库之前,设置额外的连接选项//可以设置的选项很多,这里设置字符集,否则无法处理中文if(0==mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk")) {cout<<"mysql_options() succeed"<<endl;}else{cout<<"mysql_options() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//连接数据库if(NULL!=mysql_real_connect(&mydata,"localhost","root","test","test",3306,NULL ,0))//这里的地址,用户名,密码,端口可以根据自己本地的情况更改{cout<<"mysql_real_connect() succeed"<<endl;}else{cout<<"mysql_real_connect() failed"<<endl;return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//sql字符串string sqlstr;//创建一个表sqlstr ="CREATE TABLE IF NOT EXISTS user_info";sqlstr+="(";sqlstr+="user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";sqlstr+="user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";sqlstr+="user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The SummationOf Using Time'";sqlstr+=");";if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() create table succeed"<<endl;}else{cout<<"mysql_query() create table failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//向表中插入数据sqlstr ="INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');";if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() insert data succeed"<<endl;}else{cout<<"mysql_query() insert data failed"<<endl;mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//显示刚才插入的数据sqlstr="SELECT user_id,user_name,user_second_sum FROM user_info"; MYSQL_RES *result=NULL;if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() select data succeed"<<endl;//一次性取得数据集result=mysql_store_result(&mydata);//取得并打印行数int rowcount=mysql_num_rows(result);cout<<"row count: "<<rowcount<<endl;//取得并打印各字段的名称unsigned int fieldcount=mysql_num_fields(result);MYSQL_FIELD *field=NULL;for(unsigned int i=0;i<fieldcount;i++){field=mysql_fetch_field_direct(result,i);cout<<field->name<<"\t\t";}cout<<endl;//打印各行MYSQL_ROW row=NULL;row=mysql_fetch_row(result);while(NULL!=row){for(int i=0; i<fieldcount;i++){cout<<row[i]<<"\t\t";}cout<<endl;row=mysql_fetch_row(result);}}else{cout<<"mysql_query() select data failed"<<endl; mysql_close(&mydata);return -1;}#ifdef STEPBYSTEPsystem("pause");#endif//删除刚才建的表sqlstr="DROP TABLE user_info";if(0==mysql_query(&mydata,sqlstr.c_str())){cout<<"mysql_query() drop table succeed"<<endl; }else{cout<<"mysql_query() drop table failed"<<endl; mysql_close(&mydata) ;return -1;}mysql_free_result(result);mysql_close(&mydata);mysql_server_end();system("pause");return 0;}vc++添加c++文件:添加后:运行:没有错误的话会在debug下生成可执行文件:运行aa.exe:查看数据库:没用C连接之前:C连接mysql修改后:DONE!!1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章 连接数据库微机在商业上的应用主要在数据处理,要求能够快速方便地访问一个大型数据库中的记录, MFC 提供了两种独立地面向用户的数据库访问系统,一种是ODBC (Open DataBase Connectivity ,开放数据库连接),另一种是DAO (Data Access Objects ,数据访问对象)。

本章你将学会使用ODBC 和DAO 连接数据库,并能够简单地操作数据库数据。

9.1 MFC ODBC 连接数据库ODBC 是微软公司支持开放数据库服务体系的重要组成部分,它定义了一组规范,提供了一组对数据库访问的标准API ,这些API 是建立在标准化版本SQL (Structed Query Language ,结构化查询语言)基础上的。

ODBC 位于应用程序和具体的DBMS 之间,目的是能够使应用程序端不依赖于任何DBMS ,与不同数据库的操作由对应的DBMS 的ODBC 驱动程序完成。

9.1.1 ODBC 的构成ODBC 的结构如图9-1所示。

图9-1 使用ODBC 的层次图ODBC 层由三个部件构成: 1. ODBC 管理器ODBC 管理器的主要任务是管理安装ODBC 驱动程序,管理数据源。

应用程序要访问数据库,首先必须在ODBC 管理器中创建一个数据源。

ODBC 管理器根据数据源提供的数据库存储位置,类型及ODBC 驱动程序信息,建立起ODBC 与一个特定数据库之间的联系,接下来,程序中只需提供数据源名,ODBC 就能连接相关的数据库。

ODBC 管理器位于系统控件面板中。

2. 驱动程序管理器驱动器管理器位于ODBC32.DLL ,是ODBC 中最重要的部件,应用程序通过ODBC API 执行数据库操作。

其实ODBC API 不能直接操作数据库,需要通过驱动管理器调用特定的数据库的驱动程序,驱动程序在执行完相应操作后,再将结果通过驱动程序管理器返回。

驱动器管理器支持一个应用程序同时应用程序 数据源DSNODBC API(SQL)ODBC 管理器驱动程序 管理器ODBC 驱动程序数据 源ODBC 层访问多个DBMS中的数据。

3.ODBC驱动程序ODBC驱动程序以DLL文件形式出现,提供ODBC与数据库之间的接口。

9.1.2 MFC ODBC类进行ODBC编程,有三个非常重要的元素:环境(Enviroment),连接(Connection)和语句(Statement),它们都是通过句柄来访问的。

在MFC的类库中,CDatabase类封装了ODBC编程的连接句柄,CRecordset 类封装了对ODBC编程的语句句柄,而环境句柄被保存在一个全局变量中,可以调用一个全局函数AfxGetHENV来获得当前被MFC使用的环境句柄。

此外CRecordView类负责记录集的用户界面,CFieldExchange负责CRedordset类与数据源的数据交换。

使用AppWizard生成应用程序框架过程中,只要选择了相应的数据库支持选项,你就能够很方便地获得一个数据库应用程序的框架。

1.CDatabase类CDatabase类的主要功能是建立与ODBC数据源的连接,连接句柄放在其数据成员m_hdbc中,并提供一个成员函数GetConnect()用于获取连接字符串。

要建立与数据源的连接,首先创建一个CDatabase 对象,再调用CDatabase类的Open()函数创建连接。

Open()函数的原型定义如下:virtul BOOL Open(LPCTSTR lpszDSN,BOOL bExclusive=FALSE,BOOL bReadOnly=FALSE,LPCTSTR lpszConnect=”ODBC;”,BOOL bUseCursorLib=TRUE);其中:lpszDSN指定数据源名,若lpszDSN的值为NULL时,在程序执行时会弹出数据源对话框,供用户选择一个数据源。

lpszConnect指定一个连接字符串,连接字符串中通常包括数据源名、用户ID、口令等信息,与特定的DBMS相关。

例如:CDatabase db;db.Open(NULL,FALSE,FALSE,”ODBC;DSN=HotelInfo;UID=SYSTEM;PWD=123456”);从断开与一个数据源的连接,可以调用CDatabase类的成员函数Close()。

2.CRecordset类CRecordset类对象表示从数据源中抽取出来的一组记录集。

CRecordset类封装了大量操作数据库的函数,支持查询,存取,更新数据库操作。

记录集主要分为两种类型:(1)快照(Snapshot)记录集快照记录集相当于数据库的一张静态视图,一旦从数据库抽取出来,当别的用户更新记录的操作是不会改变记录集,只有调用Requry()函数重新查询数据,才能反映数据的变化。

自身用户的添加记录操作重要调用Requry()函数重新查询数据,但快照集能反应自身用户的删除和修改操作。

(2)动态(Dynaset)记录集动态(Dynaset)记录集与快照记录集恰恰相反,是数据库的动态视图。

当别的用户更新记录时,动态记录集能即时反映所作的修改。

在一些实时系统中必须采用动态记录集,如火车标联网购票系统。

但别的用户添加记录,也需要调用Requry()函数重新查询数据后才能反映出来。

CRecordset有六个重要的数据成员如表9-1所示.。

表9-1 CRecordset 类的数据成员数据成员类型说明m_strFilter CString 筛选条件字符串m_strSort CString 排序关键字字符串m_pDatabase CDatabase类指针指向CDatabasec对象的指针m_hstmt HSTMT ODBC语句句柄m_nField UINT 记录集中字段数据成员总数m_nParams UINT 记录集中参数数据成员总数CRecordset的主要成员函数如表9-2 所示:表9-2 CRecordset类的成员函数成员函数类型Move 当前记录指针移动若干个位置MoveFirst 当前记录指针移动到记录集第一条记录MoveLast 当前记录指针移动到记录集最后一条记录MoveNext 当前记录指针移动到记录集下一条记录MovePrev 当前记录指针移动到记录集前一条记录SetAbsolutePosition 当前记录指针移动到记录集特定一条记录AddNew 添加一条新记录Delete 删除一条记录Edit 编辑一条记录Update 更新记录CancelUpdate 取消一条记录的更新操作Requry 重新查询数据源GetDefaultConnect 获得默认连接字符串GetDefaultSQL 获得默认SQL语句DoFieldExchange 记录集中字段数据成员与数据源中交换数据GetRecordCount 获得记录集记录个数IsEOF 判断当前记录指针是否在最后一个记录之后IsBOF 判断当前记录指针是否在第一个记录之前CanUpdate 判断记录集是否允许更新3.CRecordView类CRecordView类是CFormView的派生类,支持以控件视图来显示当前记录,并提供移动记录的默认菜单和工具栏,用户可以通过记录视图方便地浏览、修改、删除和添加记录。

记录视图与对话框一样使用DDX数据交换机制在视图中的控件的记录集成员之间交换数据,只需使用ClassWizard将控件与记录集的字段数据成员一一绑定。

CRecordView的主要函数如表9-3所示:表9-3 CRecordView类的主要成员函数成员函数类型OnGetRecordset 获得指向记录集的指针OnMove 当前记录指针移动时,OnMove()函数更新对当前记录所作的修改,这是将更新记录保存的方式。

IsOnFirstRecord 判断当前记录是否为记录集的第一条记录IsOnLastRecord 判断当前记录是否为记录集的最后一条记录4.CFieldExchange类CFieldExchange类支持记录字段数据的自动交换,实现记录集中字段数据成员与相应的数据源中字段之间的数据交换,类似于对话框数据自动交换机制。

9.2数据库应用程序的实现9.2.1 创建并注册数据源在创建数据库应用程序之前,先要准备好数据源。

下面我们假设数据库应用程序要连接的数据库hotel.mdb存放在C盘根目录下,该数据库下有一张TblCustomer的表,如图9-2所示:图9-2 数据表“tblCustomer”在Windows操作系统的控制面板中,可以找到数据源ODBC管理器的图标,如图9-3所示为windows XP homeEditon中的ODBC的图标,它的位置在控制面板中的管理工具文件夹。

由于所要连接的数据库是由Microsoft ACCESS创建,要求ODBC管理器中安装有Microsoft ACCESS的ODBC驱动程序。

一般,只需安装了Microsoft ACCESS软件,相应的ODBC驱动程序就已经默认安装了。

图9-3 ODBC图标鼠标双击ODBC图标,弹出“ODBC数据源管理器”对话框,如图9-4所示。

图9-4 ODBC数据源管理器在用户DSN、系统DSN、文件DSN标签页中都可以创建一个数据源,但所创建的数据源的应用范围是不同的:(1)用户DSN: 用户数据源只对当前用户可见,而且只能用于当前机器上。

(2)系统DSN:系统数据源对当前机器上的所有用户可见。

(3)文件DSN:文件数据源可以由安装了相同驱动程序的用户共享。

可以根据所创建的数据源的不同的应用场合选择在不同的标签页下创建数据源,在本例中选择系统DSN。

在标签页中的列表中显示的是在本机已创建的系统数据源的列表。

单击“Add”按钮,新建一个数据源,弹出“创建新数据源”对话框。

如图9-5所示,在ODBC驱动程序列表中选择“Microsoft Access Driver(*.mdb)”。

图9-5 选择ODBC驱动程序类别单击“Finish”按钮,弹出“ODBC Microsoft Access安装”对话框,如图9-6所示。

在数据源名文本框中填入:HotelInfo,单击“选择”按钮,弹出“选择数据库”对话框,如图9-7所示,选择数据库文件c:\hotel.mdb,连续单击“OK”按钮回到前一对话框。

图9-6 设置Microsoft Access数据源图9-7 选择数据库最后在系统DSN标签中可以看到创建的数据源HotelInfo出现在数据源列表中,如图9-8所示。

图9-8 创建好的系统数据源9.2.2创建数据库应用框架〖例9-1〗使用AppWizard可以方便地得到一个数据库应用程序的框架,创建一个MFC EXE应用程序Exam9_1,在向导的第2步中,选择单选项“Database view without file support”,如图9-9所示。

相关文档
最新文档