MySQL C 语言应用程序接口开发教程(1)

来源:互联网 发布:sqlserver版本选择 编辑:程序博客网 时间:2024/06/06 02:07

http://blog.chinaunix.net/uid-23842323-id-2656574.html


关于教程
这是一篇 MySQL 数据库的 C 语言开发教程。它讲述了用 C 语言开发 MySQL 应用程序的基本过程。

关于 MySQL 数据库
MySQL 是一个重要的开放源代码的、多用户的、多线程的数据库管理系统。MySQL 在 Web 应用中很流行。它是非常流行的 LAMP(Linux, Apache, MySQL, PHP) 架构的一部分。MySQL 被瑞典一家名为 MySQL AB 并对开源事业有杰出贡献的公司所有。MySQL 数据库可以运行在很多的操作系统上,如 BSD, Unix, Linux Windows 和 Mac。维基百科和 Youtube 都在使用 MySQL。这些站点一天有数百万将的查询。MySQL 有两个版本,分别是 MySQL 服务器系统和 MySQL 嵌入式系统。

第一个实例
我们第一个实例将要测试调用一个 MySQL 函数。

#include #include  int main(int argc, char * argv[]){printf("MySQL client version: %s\n", mysql_get_client_info());return 0;}

函数 mysql_get_client_info()返回 MySQL 客户端版本信息。

gcc version.c -o version `mysql_config --cflags --libs`./version

这是是如何编译和运行这个实例。

MySQL client version: 5.0.38
#include #include 

我们包含两个需要的头文件: mysql.h MySQL 函数调用的最重要的头文件。my_global.h 包含了一些全局的声明和标准输入/输出头文件。

printf("MySQL client version: %s\n", mysql_get_client_info());

这行代码输入了 MySQL 客户端的版本信息。我们调用了 mysql_get_client_info()函数。

创建一个数据库
在第二个实例中创建一个数据库。

#include #include  int main(int argc, char * argv[]){MYSQL * conn; conn = mysql_init(NULL); if (conn == NULL) {printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));exit(1);} if (mysql_real_connect(conn, "localhost", "username", "password", NULL, 0, NULL, 0) == NULL) {printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));exit(1);} if (mysql_query(conn, "CREATE DATABASE testdb")) {printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));exit(1);} mysql_close(conn); return 0;}

这段代码连接了 MySQL 数据库系统并创建了一个名为 testdb 的数据库。

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || mysql              || testdb             |+--------------------+3 rows in set (0.00 sec)

检验的确创建了一个新的库。

在这段实例中我们包含了错误检测,检查可能出现的错误是非常重要的。在数据库开发领域里,很多地方都可能出错。为了有清晰的代码之后的实例中将不包含错误检查,我们假设所有人清楚错误检测是开发人员的责任

实例分为如下的部分:

  • 初始化一个连接对象结构
  • 创建一个连接
  • 执行一个查询
  • 关闭连接
MYSQL * conn;

我们声明一个 MYSQL 结构指针,这个结构是连接对象。

conn = mysql_init(NULL);

mysql_init() 函数返回一个连接对象。

if (conn == NULL) {printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));exit(1);}

我们检查返回值,如果 mysql_init() 调用失败打印错误消息并中止应用程序。

if (mysql_real_connect(conn, "localhost", "username", "password", NULL, 0, NULL, 0) == NULL) {printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));exit(1);}

mysql_real_connect() 函数建立了一个到数据库的连接。我们提供连接对象、主机名、用户名和密码参数。其它四个参数分别是数据库名、端口、Unix 套接字和客户端标记。

if (mysql_query(conn, "CREATE DATABASE testdb")) {printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn));exit(1);}

mysql_query() 执行一个 SQL 语句。这里创建一个新的库。

mysql_close(conn);

最后,我们关闭数据库连接。

创建和操作表
第三个实例将要创建一个表并插入一些数据。

#include #include  int main(int argc, char * argv[]){MYSQL * conn; conn = mysql_init(NULL);mysql_real_connect(conn, "localhsot", "username", "password", "testdb", 0, NULL, 0); mysql_query(conn, "CREATE TABLE writers(name VARCHAR(25))"); mysql_query(conn, "INSERT INTO writers VALUES('Leo Tolstoy')");mysql_query(conn, "INSERT INTO writers VALUES('Jack London')");mysql_query(conn, "INSERT INTO writers VALUES('Honore de Balzac')");mysql_query(conn, "INSERT INTO writers VALUES('Lion Feuchtwanger')");mysql_query(conn, "INSERT INTO writers VALUES('Emile Zole')"); mysql_close(conn); return 0;}

我们不使用任何新的 MySQL 函数。使用 mysql_query() 函数去创建表和插入数据。

mysql_real_connect(conn, "localhost", "username", "password", "testdb", 0, NULL, 0);

我们连接数据库 testdb,用户名 username 密码 password。

mysql_query(conn, "CREATE TABLE writers(name VARCHAR(25))");

这里我们创建一个名为 writers 的表,它有一个 varchar 类型的字段。

mysql_query(conn, "INSERT INTO writers VALUES('Leo Tolstoy')");

我们在 writers 表里插入一个记录。

mysql> show tables;+------------------+| Tables_in_testdb |+------------------+| writers          |+------------------+1 row in set (0.00 sec)

显示数据库里的表。

mysql> select * from writers;+-------------------+| name              |+-------------------+| Leo Tolstoy       || Jack London       || Honore de Balzac  || Lion Feuchtwanger || Emile Zola        |+-------------------+5 rows in set (0.00 sec)

枚举表中的记录。

Over!


0 0