一、环境准备

安装 MySQL 客户端开发库

在 Ubuntu 系统下执行以下命令安装:

sudo apt update
sudo apt install libmysqlclient-dev

该库提供了我们通过 #include <mysql.h> 使用的 MySQL C API。

二、C 代码示例:插入用户数据

以下是一个完整的 C 程序,向远程 MySQL 数据库插入一条用户记录:

#include <mysql.h>
#include <string.h>
#include <stdio.h>

// MySQL服务器的IP地址
#define KING_DB_SERVER_IP   "10.0.0.129"
// MySQL服务器端口号,默认是3306
#define KING_DB_SERVER_PORT 3306
// 数据库用户名
#define KING_DB_USERNAME    "admin"
// 数据库密码
#define KING_DB_PASSWORD    "123456"
// 默认连接的数据库名称
#define KING_DB_DEFAULTDB   "KING_DB"

// 要执行的SQL插入语句,向TBL_USER表插入一条数据
#define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME,U_GENGDER) VALUES('mianqian','woman');"

int main() {
    MYSQL mysql;

    // 初始化MySQL对象,返回NULL表示初始化失败
    if(NULL == mysql_init(&mysql)){
        printf("mysql_init : %s\n", mysql_error(&mysql));
        return -1;  // 初始化失败,程序退出
    }

    // 连接MySQL数据库,参数依次为:
    // MYSQL结构体指针,服务器IP,用户名,密码,数据库名,端口号,socket,flags
    if(!mysql_real_connect(&mysql, KING_DB_SERVER_IP, KING_DB_USERNAME, KING_DB_PASSWORD,
                           KING_DB_DEFAULTDB, KING_DB_SERVER_PORT, NULL, 0)) {
        // 连接失败,打印错误信息并退出
        printf("mysql_real_connect : %s\n", mysql_error(&mysql));
        return -2;
    }

    // 执行SQL查询语句
    // 参数依次为:MYSQL结构体指针,SQL语句字符串,字符串长度
    if(mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
        // 查询失败,打印错误信息并退出
        printf("mysql_real_query : %s\n", mysql_error(&mysql));
        return -3;
    }

    // 关闭MySQL连接,释放资源
    mysql_close(&mysql);
    return 0; // 程序成功结束
}

三、代码讲解 

  • mysql_init():初始化 MYSQL 结构体;

  • mysql_real_connect():连接数据库,注意 IP、端口、用户名、密码、数据库名需正确;注意这个返回的成功的值为1,而不是0.

  • mysql_real_query():执行 SQL 语句,这里是插入一条用户记录;

  • mysql_close():断开数据库连接。

四、编译与运行

1. 编译命令

gcc mysql_test.c -o mysql_test -lmysqlclient

确保你的 .c 文件命名正确,库路径配置无误。 

2. 运行程序

./mysql_test

如输出无错误,即成功插入数据。

五、MySQL Workbench 配置说明

为了使该程序能远程连接数据库,MySQL 服务端需要做如下设置:

1. 创建用户

CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

注意不要直接使用 root@localhost,要允许远程连接的 admin@%

2. 修改配置文件(如 /etc/mysql/mysql.conf.d/mysqld.cnf

确保注释或修改如下项:

bind-address = 0.0.0.0

然后重启服务:

sudo systemctl restart mysql

3.查看表格

接下来就可以在Workbench通过以下命令查看添加的项:

SELECT * FROM TBL_USER;

https://github.com/0voice

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐