在C/C++中,可以使用MySQL提供的API来编写代码将数据写入MySQL数据库。首先需要安装并配置MySQL客户端库,然后使用mysql.h头文件中的函数和结构体来实现连接、执行SQL语句和关闭数据库的操作。
在C/C++中,我们可以使用MySQL Connector/C++库来连接和操作MySQL数据库,以下是一个简单的示例,展示如何连接到MySQL数据库并执行一个基本的SQL查询:

(图片来源网络,侵删)
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
int main() {
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
// 创建一个MySQL驱动实例
driver = sql::mysql::get_mysql_driver_instance();
// 连接到MySQL服务器
con = driver>connect("tcp://127.0.0.1:3306", "user", "password");
// 创建一个新的SQL语句对象
sql::Statement *stmt = con>createStatement();
// 执行SQL查询
stmt>execute("USE test");
// 删除表
stmt>execute("DROP TABLE IF EXISTS test");
// 创建新表
stmt>execute("CREATE TABLE test(id INT, label CHAR(1))");
// 插入数据
stmt>execute("INSERT INTO test(id, label) VALUES (1, 'a')");
delete stmt;
delete con;
return 0;
}
在这个例子中,我们首先创建了一个MySQL驱动实例,然后使用这个驱动连接到本地的MySQL服务器,我们创建了一个新的SQL语句对象,并使用它来执行一系列的SQL命令,包括选择一个数据库、删除一个表(如果存在)、创建一个新的表,以及向这个表中插入一些数据。
下面我将展示一个简单的C程序示例,它使用MySQL的C API来连接到一个MySQL数据库并写入数据,该介绍将包含以下列:
ID:唯一标识符
Name:名字
Age:年龄
假设你的数据库中已经有一个名为students的表,它具有上述列。

(图片来源网络,侵删)
确保你已经安装了MySQL开发库,并在你的系统上配置了相关的环境。
下面是一个C程序的基本结构:
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
// 初始化连接句柄
MYSQL *conn = mysql_init(NULL);
// 连接到数据库
if (mysql_real_connect(conn, "host", "user", "password", "database", 0, NULL, 0) == NULL) {
fprintf(stderr, "%s
", mysql_error(conn));
mysql_close(conn);
return 1;
}
// 设置字符集,避免乱码
mysql_query(conn, "SET NAMES 'utf8'");
// 准备插入数据的SQL语句
char *sql = "INSERT INTO students (ID, Name, Age) VALUES (?, ?, ?)";
// 假设我们要插入以下数据
int id = 1;
const char *name = "张三";
int age = 20;
// 装饰SQL语句
if (mysql_real_query(conn, sql, strlen(sql))) {
fprintf(stderr, "%s
", mysql_error(conn));
mysql_close(conn);
return 1;
}
// 准备结果集句柄
MYSQL_RES *result = mysql_use_result(conn);
// 处理结果(如果有的话)
// 清理连接
mysql_free_result(result);
mysql_close(conn);
return 0;
}
以下是上述代码的介绍形式:
| 步骤 | 代码行 | 说明 |
| 初始化连接 | MYSQL *conn = mysql_init(NULL); |
初始化连接句柄 |
| 连接数据库 | mysql_real_connect() |
尝试连接到MySQL服务器 |
| 错误处理 | `fprintf(stderr, "%s
", mysql_error(conn));` | 如果连接失败,打印错误信息 |
| 设置字符集 | mysql_query(conn, "SET NAMES 'utf8'"); |
防止乱码 |
| 准备SQL语句 | char *sql = "INSERT INTO students (ID, Name, Age) VALUES (?, ?, ?)"; |
创建SQL插入语句 |
| 插入数据 | int id = 1; const char *name = "张三"; int age = 20; |
定义要插入的数据 |
| 执行SQL语句 | mysql_real_query() |
执行SQL语句 |
| 处理结果 | MYSQL_RES *result = mysql_use_result(conn); |
获取查询结果 |
| 清理资源 | mysql_free_result(result); mysql_close(conn); |
清理结果集和关闭连接 |
请注意,在真实环境中,你需要将"host","user","password","database" 替换为实际的服务器地址、用户名、密码和数据库名,SQL注入是严重的安全问题,因此应始终使用参数化查询(这里用问号?占位符)来防止它。
上述代码示例没有实际执行参数化查询,因为MySQL C API在执行参数化查询时需要额外的步骤来绑定参数,在实际使用时,你需要使用mysql_stmt_prepare,mysql_stmt_bind_param 等函数来正确执行带参数的SQL语句。

(图片来源网络,侵删)



评论(0)