天津大学计算机科学与技术学院
Mysql++基本用法报告
及使用规范
Mysql++ 2.2.3在Doboo II服务端中使用规
范标准
常兴龙
2007‐6‐1
本文档为Mysql ++ Lib在Doboo II中的使用文档草案,本版本为使用规范基本版,将在开发过程日臻完善,作为工程开发标准统一及后续开发人员的参考规范
第一部分 Mysql++基础篇
Mysql++是把Mysql 提供的C 库的一个C++封装库,它用STL (Standard  Template  Language )开发并编写,并为C++开发程序员提供象操作STL 容器一样方便的操作数据库的一套机制。  本部分将以Mysql 
++本身机制及用法为主导,讨论Mysql++的用法。有关Mysql++ 的开发库有很多可用版本,关于My ql  的CppApi 可以参看s sourceforge/project/showfiles.php?group_id=7869 ,但Mysql++于2005推出面向新的开发包,且能较好的与Mysql 配合,所以建议使用Mysql++去代替CppApi ,对应网上资源地址为tangentsoft/mysql++  ,本文以后者为准进行介绍。
第一章 Mysql++基本用法
Mysql++为Mysql 的C ‐Api 的再次封装,所用封装技术标准为STL ,因此可以在各支持C++平台下编译并重用。其中的SSQL 标准提供了与Hibernate 相同的封装思想,使Table 与Class 可以做一一映射,以实现用STL 方便地操作数据表。
1.1  Mysql++各版本比较
在tangentsoft/mysql++/ 资源列表中,有重多版本可供下载。
主要版本介绍如下:
1. Mysql++
2.2.3版:此版本为2007.04.17生成版,为截止到目前为止的最新版,如果工作
是从头开始,没有代码需要兼容,下载此版本。
2. Mysql++ 2.2.1版:此版本为2.1.X 版中的最终版本,由于2.2.X 版本兼容此版,故对于
mysql下载下来没安装包2.2.1版,没有必要下载。
3. Mysql++ 1.71版:此版本是可以用VC  6.0编译通过的唯一官方版本,如果己有工程为
VC6.0建立的,且没有升级的打算,用该版的Mysql++。
除了Mysql++ 1.7.1版外,其余版本的编译条件至少为Visual  C++.NET  (a.k.a. Visual  Studio  2002, a.k.a. Visual  C++ 7.0),如果是Linux 或MAC 系统则至少为GCC3.x 。
1.2  Mysql++
2.2.3在Windows 环境下安装说明
从tangentsoft/mysql++/releases/mysql++‐2.2. 下载安装包,该包展开后的结构如下:
MYSQL++-2.2.3
├─config
├─Debug
├─doc
├─examples
├─lib
└─Release
其中,Doc中文档为Mysql++库的使用帮助文档,包含Html与PDF两个版本。Examples中分别为MFC与wForms两个简单的示例工程。但建议把Mysql++编译成Dll或Lib,而非直接应用在工程中。
在Mysql++2.2.3根目录中,有面向Windows的安装文件install.bat,用UltraEdit打开,转换为Dos格式.运行以下命令以安装Mysql++:
C:\Mysql++2.2.3\Install lib
此时,Mysql++2.2.3应能顺利安装在C:\Mysql++目录中,在Visual Studio Include 搜索路径中加入C:\
mysql++\include,在Visual Studio Lib搜索路径中加入C:\mysql++\lib,同时,把安装在Mysql数据库下的libmysql.lib等库文件(有Debug或Release版,根据您的需要考贝)考入c:\mysql++\lib下,安装至此完成。
第二章 Mysql++在Visual studio环境中使用指南
2.1  Mysql++常用类概览
Transaction类,Transaction类为数据库操作提供了事务机制,保证一系列操作的原子性。
Connection类,Connection类是对Mysql数据库操作的基础。
Query类,该类从std::stringstream继承,因此,程序员可以象操作Stream一样操作Query 类,以生成正确的Sql语句,如:
Query query;
query<<”drop table test”;
同样,程序员也可以使用模版,以及SSQL来生成正确的Query以便对Mysql进行操作,这些技巧将在稍后章节进行介绍。在Mysql++中,与C#,Java语言提供的机制不同,Query类包含了如Update,Delete等操作。
Result类,该类主要存储数据库查询存储结果,该类一般不直接构建,而是做为由Query类返回集的容器。
Row类,该类对应数据表中的一行。
其它比较常用的类,如:UseRes , ResNSel类将在使用其示例时介绍。
2.2  Mysql++用法详述
Mysql++默认的工作空间名称为mysqlpp,如果本章不做特别说明,默认己加入以下语句:
#include <string>
#include <iostream>
#include “mysql++.h”
using namespace mysqlpp;
using namespace std;
2.2.1 建立Mysql连接
Connection类的继承关系图如下图所示:
Connection类的简要协作关系图如下图所示:
用法:
(1)创建一个Connection对象,但不建立连接至服务器的连接:
mysqlpp::Connection::Connection  (  bool  te = true  )
其中,te为真时,当onnection出错时抛出异常,为假时,不抛出异常。
(2)创建连接对象,并建立连接至服务器的连接:
Connection (const char *db, const char *host="", const char *user="", const char *passwd="", uint port=0, my_bool compress=0, unsigned int connect_timeout=60, cchar *socket_name=0, unsigned int client_flag=0)
(3)以某个己有连接为模版,建立一个新连接
Connection (const Connection &other)
(4)用Mysql结构创建新连接
connect (const MYSQL &mysql)
示例:
mysqlpp::Connection con(false);
t(“test”,””,”root”,”123456”);
2.2.2使用Query类进行查询
Query类的继承关系图如下图所示:
Query类的协作关系图如下图所示:
用法:
Query类也有几种构造函数,
(1)创建一个依赖于特定Connection连接的Query

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。