由此可见,
MySQL 数据库服务器在网站建设中的表现是十分出色的。但是,正因为这样,几乎很少有人将 MySQL
用于应用软件的开发中。本文将详细介绍
VC 环境中 MySQL 数据库服务器不同接口的应用,并最终将产生一个
CDatabase 类封装 MySQL 数据库接口功能。
数据库接口实现与应用的计算机环境:硬件,
C466、128M、15G;软件及操作系统,VISUAL C++
6.0、MySQL 3.23.22-beta for win32、WIN98。
MySQL 数据库简介
MySQL 是一个真正的多用户、多线程 SQL 数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的
数据库语言,它使得存储、更新和存取信息更加容易。
MySQL 是一个客户机/服务器结构的实现,它由一个服务器
守护程序
mysqld 和许多不同的客户程序以及库组成的。
MySQL 的主要目标是快速、健壮和易用。最初是因为 MySQL 的创始人需要这样的一个 SQL 服务器,它能处理与任
何不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,
MySQL 因此就开发出来了。
它提供
C,C++,JAVA(JDBC),Perl,Python,PHP and TCL 的 API 接口;多平台支持,包括
Solaris,SunOS,BSDI,SGI IRIX,AIX,DEC UNIX,Linux,FreeBSD,SCO
OpenServer,NetBSD,OpenBSD,HPUX,Win9x and NT;多样的数据类型,包括有/无符号
1,2,3,4,8 字节 integers,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,
BLOB,DATE,DATETIME,YEAR,SET,ENUM;非常灵活和安全的权限系统,密码加密;为 Windows 提供
ODBC
接口,可通过
Access
与之相联,另有第三方开发商提供多样的
ODBC 驱动程序;在 MySQL 3.23 中使用
新
MyISAM 最大的表大小可达 8
百万
TB(2^63 个字节);多种语言支持,但不支持中文。
然而,为了实现快速、健壮和易用的目的,
MySQL 必须牺牲一部分灵活而强大的功能,如子查询、存储过程与触
发器、外键、事物处理等。因而,
MySQL 在某些应用中缺乏灵活性,但这也使它对数据的处理速度较其它数据库
服务器至少快
2~3 倍。
MySQL 自身不支持 Windows 的图形界面,因此,所有的数据库操作及管理功能都只能在 MS-DOS 方式下完成。首
先,必须登陆
MySQL 服务器,即在提示符\MySQL\BIN>下输入 MYSQL –H host –U user –Ppassword,提
示符改为
mysql>时表示登陆成功。然后,选择所操作的数据库,即 mysql> USE databasename。接着就可以
用
SQL 语句进行查询了。如果需要退出数据库服务器,可执行 QUIT 命令,这样就成功退出服务器了。
当然,由于
MySQL 的知名度日益增加,许多第三方软件公司推出了 MySQL 在 Windows 环境中的具有图形界面的
支持软件,如
EMS 公司的 EMS MYSQL MANAGER 就提供了 Windows 形式的 MySQL 数据库操作功能。
2 利用 ODBC API 实现 MySQL 数据库功能调用
ODBC(Open Database Connectivity)即开放式数据库互联,作为 Windows 开放性结构的一个重要部分已
经为很多的
Windows 程序员所熟悉,ODBC 的工作依赖于数据库制造商提供的驱动程序,使用 ODBC API 的时候,
Windows 的 ODBC 管理程序把数据库访问的请求传递给正确的驱动程序,驱动程序再使用 SQL 语句指示 DBMS
(数据库管理系统)完成数据库访问工作,因此,
ODBC 的存在为我们开发应用数据库程序提供了非常强大的能力
和灵活性。在
Windows 下可以对多种数据库安装 ODBC 数据库,用来连接数据库并访问它们的数据。
对于
MySQL 数据库服务器来说,它的制造商同样提供了相应的 ODBC 驱动程序,其最新版本为 myodbc-
2.50.31-win95。在 WIN98 环境下进行安装后,就可以利用编程语言通过 ODBC API 对 MySQL 数据库进行各种
ODBC 所支持的操作。因为 ODBC 屏蔽了各种数据库的差异,所以,原来用于对其它数据库进行操作的程序,通过
ODBC 同样能够对 MySQL 数据库进行操作。也就是说,ODBC 使程序对数据库的通用性提高了。
用
VC 通过 ODBC API 对 MySQL 数据库进行编程,必须要对 MySQL 数据源进行设置,具体设置如图 1:
图
1 数据源设置信息
通过上图的设置,接着我们就可以按照一般的
ODBC 数据库编程方法,对 MySQL 数据库进行编程。
3 利用 MySQL 自带的 C API 函数实现数据库功能调用
由于各个数据库之间的差异,它们所提供的数据库功能也就各有不同。这样,通过
ODBC API 就不可能完全拥有
所有的数据库功能,因而影响了程序对数据库的控制功能,也就不能充分发挥数据库的能力。并且这种统一的接
口还是以损失效能为前提的,这就使数据库操作时间延长。所以,为了解决以上问题,
MySQL 的制造商在提供
ODBC 驱动程序的基础上,还提供了各种编程环境下的 API
,其中包括
C API。这些 API 函数很显然能尽可能地
发挥数据库的能力,并减少数据库操作的延长时间,但却使程序的通用性受到严重影响。
MySQL 提供了一套 C API 函数,它由一组函数以及一组用于函数的数据类型组成,这些函数与 MySQL 服务器进
行通信并访问数据库,可以直接操控数据库,因而显著地提高了操控效能。
C API 数据类型包括:MYSQL(数据库连接句柄)、MYSQL_RES(查询返回结果集)、MYSQL_ROW(行集)、
MYSQL_FIELD(字段信息)、MYSQL_FIELD_OFFSET(字段表的偏移量)、my_ulonglong(自定义的无符号
整型数)等;
C API 提供的函数包括:mysql_close()、mysql_connect()、mysql_query()、
mysql_store_result()、mysql_init()等,其中 mysql_query()最为重要,能完成绝大部分的数据库操
控。
下面将具体讨论数据库操作类
CDatabase 通过 C API 的实现以及在 VC 中的应用。
3.1 CDatabase 类的实现