MySQL Connector/C 连接 seekdb 示例程序
MySQL Connector/C 通常被称为 MySQL C API,它提供了一组 C 语言的函数和数据结构,允许开发人员使用 C/C++ 语言来连接、查询和管理MySQL数据库。这个 API 允许开发人员直接在其 C/C++ 应用程序中使用MySQL数据库。
本文将介绍如何使用 MySQL Connector/C (libmysqlclient) 驱动 和 seekdb 构建一个应用程序,实现创建表、插入数据和查询数据等基本操作。
前提条件
在安装使用 MySQL Connector/C (libmysqlclient) 前请确保设置了基本的数据库开发环境,要求如下:
- GCC 版本为 3.4.6 及以上,推荐使用 4.8.5 版本。
- CMake 版本为 2.8.12 及以上。
- 您已安装 seekdb。
操作步骤
- 获取 seekdb 连接信息。
- 安装 MySQL Connector/C 驱动。
- 编写应用程序。
- 运行应用程序。
步骤一:获取数据库连接串
联系 seekdb 部署人员或者管理员获取相应的数据库连接串,例如:
mysql -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 seekdb 的连接 IP。应该被实际的 IP 替换,也可以使用本地 IP 及 127.0.0.1。$port:提供 seekdb 接端口。应该被实际的端口替换,默认是 2881,在部署 seekdb 时可自定义。$database_name:需要访问的数据库名称。$user_name:提供连接账户。格式:用户名。$password:提供账户密码。
更多连接串的信息,请参见 通过 MySQL 客户端连接 seekdb。
示例如下:
mysql -hxxx.xxx.xxx.xxx -P2881 -uroot -p****** -Dtest
步骤二:安装 MySQL Connector/C 驱动
## 在 Ubuntu 系统上请使用下面的代码进行安装:
sudo apt-get install libmysqlclient-dev
## 在 CentOS 系统上请使用下面的代码进行安装:
sudo yum install mysql-devel
## 确认是否安装成功
mysql_config --version
步骤三:编写应用程序
打开你的文本编辑器,在文本编辑器中编辑示例 test.cc 文件并保存,代码如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main() {
MYSQL *conn = mysql_init(NULL); // 初始化MySQL连接
if (conn == NULL) {
fprintf(stderr, "mysql_init() failed\n");
return 1;
}
// 连接到MySQL数据库服务器
if (mysql_real_connect(conn, "host", "user", "passwd", "db", port, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed\n");
mysql_close(conn);
return 1;
}
// 创建用户表
if (mysql_query(conn, "CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT, name VARCHAR(255), email VARCHAR(255), PRIMARY KEY(id))") != 0) {
fprintf(stderr, "Error in creating table: %s\n", mysql_error(conn));
mysql_close(conn);
return 1;
}
// 插入数据
if (mysql_query(conn, "INSERT INTO users (name, email) VALUES ('小明', 'xiaoming@example.com')") != 0) {
fprintf(stderr, "Error in inserting data: %s\n", mysql_error(conn));
mysql_close(conn);
return 1;
}
// 查询数据
if (mysql_query(conn, "SELECT * FROM users") == 0) {
MYSQL_RES *result = mysql_store_result(conn);
if (result != NULL) {
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
for (int i = 0; i < num_fields; i++) {
printf("%s ", row[i] ? row[i] : "NULL");
}
printf("\n");
}
mysql_free_result(result);
} else {
fprintf(stderr, "Error in retrieving result: %s\n", mysql_error(conn));
}
} else {
fprintf(stderr, "Error in selecting data: %s\n", mysql_error(conn));
}
// 删除表
if (mysql_query(conn, "DROP TABLE IF EXISTS users") != 0) {
fprintf(stderr, "Error in dropping table: %s\n", mysql_error(conn));
mysql_close(conn);
return 1;
}
mysql_close(conn); // 关闭连接
return 0;
}
根据 步骤一:获取 seekdb 连接信息 中的信息修改项目文件 test.cc 中的数据库连接信息。
- 在 Linux 环境下,可以使用
vi test.cc或者vim test.cc命令编辑test.cc文件,修改文件中的数据库连接信息,确保与实际情况相符。
test.cc 文件中的数据库连接信息示例如下:
# 这部分连接信息需要修改为你所获取到连接串在的真实信息,示例如下
if (mysql_real_connect(conn, "10.10.10.1", "root", "test", "db", 2881, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed\n");
mysql_close(conn);
return 1;
}
步骤四:编译应用程序
代码编辑完成后,可以通过如下命令进行编译。
gcc -o test test.cc `mysql_config --cflags --libs`
编译成功后,会生成可执行文件 test。
步骤五:运行应用程序
通过如下命令运行应用程序。
./test
输出结果如下,输出如下结果,说明数据库连接成功,示例语句正确执行。
1 小明 xiaoming@example.com