mysql connector 教程_MySQL Connector/C++入门教程(上)

翻译: DarkBull(www.darkbull.net)

译者注:该教程是一篇介绍如何使用C++操作MySQL的入门教程,内容简单易用。我对原文中的一些例子进行了修改,并新添加了部分例子,主要目标是更简单明了的向读者介绍如何操作MySQL数据库。本人也是MySQL的初学者,错误也在所难免,欢迎拍砖!

这篇教程将一步一步引导您如何去构建和安装MySql Connection/C++ Driver,同时提供几个简单的例子来演示如何连接MySQL数据库,如何向MySQL添加、获取数据。本教程关注如何在C++应用程序中操作MySQL,所以首先应该确定MySQL数据库服务已经开启并且在当前机器能够访问到。

本教程面向的读者是MySQL Connector/C++的初学者,如果您对C++语言或者MySQL数据库不是很了解,请参考其他的教程。

教程使用了下面所列的一些工具和技术,来构建、编译、运行例子程序(译者注:这是原文作者使用的环境。笔者使用的环境是:WinXP,MySQL5.1,VS2008, ):

Database MySQL Server 5.1.24-rc

C++ Driver MySQL Connector/C++ 1.0.5

MySQL Client Library MySQL Connector/C 6.0

Compiler Sun Studio 12 C++ compiler

Make CMake 2.6.3

Operating System OpenSolaris 2008.11 32-bit

CPU / ISA Intel Centrino / x86

Hardware Toshiba Tecra M2 Laptop

目录

MySQL C++ Driver的实现基于JDBC4.0规范

安装MySQL Connector/C++

运行时依赖

C++ IDE

为示例程序创建数据库与数据表

使用Connector/C++测试数据库连接

使用prepared Statements

使用事务

访问Result Set Metadata

访问Database Metadata

通过PreparedStatment对象访问参数元数据

捕获异常

调试/跟踪 MySQL Connector/C++

更多信息

MySQL C++ Driver的实现基于JDBC4.0规范

MySQL Connector/C++是由Sun Microsystems开发的MySQL连接器。它提供了基于OO的编程接口与数据库驱动来操作MySQL服务器。

与许多其他现存的C++接口实现不同,Connector/C++遵循了JDBC规范。也就是说,Connector/C++ Driver的API主要是基于Java语言的JDBC接口。JDBC是java语言与各种数据库连接的标准工业接口。Connector/C++实现了大部分JDBC4.0规范。如果C++程序的开发者很熟悉JDBC编程,将很快的入门。

MySQL Connector/C++实现了下面这些类:

Driver

Connection

Statement

PreparedStatement

ResultSet

Savepoint

DatabaseMetaData

ResultSetMetaData

ParameterMetaData

Connector/C++可用于连接MySQL5.1及其以后版本。

在MySQL Connector/C++发布之前,C++程序员可以使用MySQL C API或者MySQL++访问MySQL。前者是非标准、过程化的C API,后者是对MySQL C API的C++封装。

安装MySQL Connector/C++

此处略。(译者注:用户可以到MySQL的官网[http://dev.mysql.com/downloads/connector/cpp/1.0.html]去下载MySQL Connector/C++的安装程序,或者只下载dll,或者下载源代码自己编译。笔者在Window平台上使用MySQL,下载了mysql-connector-c++-noinstall-1.0.5-win32这个版本用于调试。)

运行时依赖

MySQL Connector/C++ Driver依赖MySQL的客户端库,在MySQL安装目录下的lib/opt/libmysql.dll。如果是通过安装程序来安装MySQL Connector/C++,libmysql会一并安装,如果从官网只下载了dll或源码,在使用时,程序必须链接到libmysql.dll。

C++ IDE

此处略。(译者注:原文作者使用NetBean作为C++的IED。笔者使用VS2008)

为示例程序创建数据库与数据表

(译者注:此节略掉许多不太重要的内容。)在MySQL中创建test数据库,使用下面语句创建数据表:City:

Create Table: CREATE TABLE `City` ( `CityName` varchar(30) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=ascii

然后向City表中添加一些数据。最后表的内容为:

mysql> SELECT * FROM City;

+--------------------+

| CityName           |

+--------------------+

| Hyderabad, India   |

| San Francisco, USA |

| Sydney, Australia  |

+--------------------+

3 rows in set (0.17 sec)

使用Connector/C++测试数据库连接

下面的代码演示如何使用Connector/C++连接到MySQL服务器:

连接到test数据库;

执行一个查询获取City表中的数据,显示在控制台上;

使用Prepared Statements向City表插入数据;

使用savepoints演示事务;

获取结果集和数据库的元信息;

例子代码仅仅用于演示,不建议读者在实际开发中使用这种样式的代码。(译者注:例子代码很长,如果看不太明白,没关系,等阅读完全文之后再回过头来看)

#include 

#include 

#include 

#include 

#include "mysql_driver.h"

#include "mysql_connection.h"

#include "cppconn/driver.h"

#include "cppconn/statement.h"

#include "cppconn/prepared_statement.h"

#include "cppconn/metadata.h"

#include "cppconn/exception.h"

#define DBHOST "tcp://127.0.0.1:3306"

#define USER "root"

#define PASSWORD "000000"

#define DATABASE "test"

#define NUMOFFSET 100

#define COLNAME 200

using namespace std;

using namespace sql;

#pragma comment(lib, "mysqlcppconn.lib")

void Demo();

int main(int argc, char *argv[])

{

Demo();

return 0;

}

/* 获取数据库信息 */

static void GetDBMetaData(Connection *dbcon)

{

if (dbcon->isClosed())

{

throw runtime_error("DatabaseMetaData FAILURE - database connection closed");

}

cout <

cout <

cout <

/* The following commented statement won't work with Connector/C++ 1.0.5 and later */

//auto_ptr  dbcon_meta (dbcon->getMetaData());

DatabaseMetaData *dbcon_meta = dbcon->getMetaData();

cout <getDatabaseProductName() <

cout <getDatabaseProductVersion() <

cout <getUserName() <

cout <getDriverName() <

cout <getDriverVersion() <

cout <isReadOnly() <

cout <supportsTransactions() <

cout <supportsDataManipulationTransactionsOnly() <

cout <supportsBatchUpdates() <

cout <supportsOuterJoins() <

cout <supportsMultipleTransactions() <

cout <supportsNamedParameters() <

cout <supportsStatementPooling() <

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值