C连接MySQL数据库,实现数据互通
在现代数据应用中,我们经常需要将程序与数据库进行互动以实现数据的储存和处理,MySQL数据库是其中一种常见的数据库类型。本文将介绍如何通过C语言连接MySQL数据库,完成数据互通的操作。
1. 安装MySQL
我们需要安装MySQL数据库,以便我们可以通过C程序进行连接和操作。在Windows系统上,我们可以下载安装包,按照提示进行安装即可。在Linux系统上,我们可以通过命令行进行安装:
sudo apt-get update
sudo apt-get install mysql-server
安装完成后,我们需要启动MySQL服务:
sudo service mysql start
2. 连接MySQL
在C程序中,我们可以通过MySQL C API进行MySQL数据库连接。我们需要在程序文件头部包含MySQL C API的头文件:
#include
接下来,我们可以定义一个MySQL连接的变量并进行初始化:
MYSQL *conn = mysql_init(NULL);
在连接MySQL之前,我们需要设置连接的参数,包括主机名、用户名、密码等:
if (!mysql_real_connect(conn, “localhost”, “user”, “password”, NULL, 0, NULL, 0)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
这里,我们使用了mysql_real_connect()函数连接到本地MySQL服务器,并提供了用户名和密码。
3. 数据库操作
连接完成后,我们可以进行各种数据库操作,例如创建一个新的数据库和表格:
if (mysql_query(conn, “CREATE DATABASE testdb”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “USE testdb”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “CREATE TABLE testtable (id INT, name VARCHAR(30))”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
这里,我们使用了mysql_query()函数对数据库进行创建和操作,如果出现错误则会在stderr中输出错误消息。
4. 数据查询
在MySQL数据库中,我们可以使用SELECT语句查询数据,并将结果储存到程序中:
if (mysql_query(conn, “SELECT * FROM testtable”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
MYSQL_RES *res = mysql_use_result(conn);
MYSQL_ROW row;
printf(“id\\tname\\n”);
while ((row = mysql_fetch_row(res)) != NULL) {
printf(“%s\\t%s\\n”, row[0], row[1]);
}
mysql_free_result(res);
这里,我们使用了mysql_use_result()函数获取SELECT语句的结果集,并使用mysql_fetch_row()函数逐行返回结果。
5. 关闭连接
我们需要在程序结束时关闭MySQL连接:
mysql_close(conn);
这样,我们就可以成功地连接MySQL数据库并进行数据互通。完整的代码如下:
#include
#include
#include
int mn() {
MYSQL *conn = mysql_init(NULL);
if (!mysql_real_connect(conn, “localhost”, “user”, “password”, NULL, 0, NULL, 0)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “CREATE DATABASE testdb”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “USE testdb”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “CREATE TABLE testtable (id INT, name VARCHAR(30))”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “INSERT INTO testtable VALUES (1, ‘Alice’)”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “INSERT INTO testtable VALUES (2, ‘Bob’)”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
if (mysql_query(conn, “SELECT * FROM testtable”)) {
fprintf(stderr, “%s\\n”, mysql_error(conn));
mysql_close(conn);
exit(1);
}
MYSQL_RES *res = mysql_use_result(conn);
MYSQL_ROW row;
printf(“id\\tname\\n”);
while ((row = mysql_fetch_row(res)) != NULL) {
printf(“%s\\t%s\\n”, row[0], row[1]);
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}