MySQL批量插入:C语言实现
MySQL是一个著名的关系型数据库管理系统,它具有高效、稳定的特性,被广泛应用于各个领域的数据存储和处理。其中,批量插入是MySQL数据库中的一项重要功能之一,它可以实现快速地将大量的数据同时插入到数据库中,提高了数据处理效率。本文将介绍通过C语言实现MySQL批量插入的方法。
1.准备工作
在开始之前,需要先安装好MySQL数据库和开发环境,本文所用的MySQL版本为5.7,开发环境为vscode+mingw-w64。还需要下载MySQL C API库,并将libmysql.dll等动态链接库文件复制到mingw-w64的bin目录下,以便程序引用。
2.连接数据库
在实现批量插入之前,需要先连接到MySQL数据库。我们可以使用以下代码:
“`c
MYSQL mysql; //定义MySQL对象
char *host = “localhost”; //数据库服务器地址
char *user = “root”; //数据库用户名
char *pass = “123456”; //数据库密码
char *db = “test”; //选择的数据库名
unsigned int port = 3306; //数据库端口号
const char *unix_socket = NULL; // socket文件
unsigned long client_flag = 0; //连接标志
//初始化MySQL对象
mysql_init(&mysql);
//连接到数据库
if(!mysql_real_connect(&mysql, host, user, pass, db, port, unix_socket, client_flag)){
fprintf(stderr, “无法连接到数据库: %s\n”, mysql_error(&mysql));
return 0;
}
//连接成功,继续后续操作
3.批量插入数据
连接成功后,我们可以开始实现批量插入数据的功能。以下是实现方法:
```c
char *sql = "INSERT INTO student (id, name, age) VALUES ";
char values[1024] = {0};
// 拼接插入语句中的values部分,具体形式如下:
// (1, 'test1', 18), (2, 'test2', 19), ..., (100, 'test100', 35)
for(int i = 1; i
char temp[50];
sprintf(temp, "(%d, 'test%d', %d),", i, i, i+17);
strcat(values, temp);
}
// 替换字符串中最后一个逗号为分号
int len = strlen(values);
values[len-1] = ';';
// 拼接完整的SQL语句
char *query = (char*)malloc(sizeof(char)*(strlen(sql)+strlen(values)+1));
strcpy(query, sql);
strcat(query, values);
// 插入数据
if(mysql_query(&mysql, query)){
fprintf(stderr, "批量插入失败: %s\n", mysql_error(&mysql));
}
else{
printf("批量插入成功\n");
}
上述代码中,我们首先拼接了插入语句中的values部分,这里我们插入了100条数据,其中id、name、age分别为1-100、test1-test100、18-35。然后,我们替换最后一个逗号为分号,拼接完整的SQL语句,并调用mysql_query()函数执行插入操作。如果插入成功,就会输出”批量插入成功”,否则就会输出错误信息。
4.关闭数据库连接
完成数据插入后,我们需要关闭数据库连接,以释放资源。以下是关闭数据库连接的代码:
“`c
// 关闭数据库连接
mysql_close(&mysql);
5.完整代码
最终的完整代码如下:
```c
#include
#include
#include
#include
int mn()
{
MYSQL mysql; //定义MySQL对象
char *host = "localhost"; //数据库服务器地址
char *user = "root"; //数据库用户名
char *pass = "123456"; //数据库密码
char *db = "test"; //选择的数据库名
unsigned int port = 3306; //数据库端口号
const char *unix_socket = NULL; // socket文件
unsigned long client_flag = 0; //连接标志
//初始化MySQL对象
mysql_init(&mysql);
//连接到数据库
if(!mysql_real_connect(&mysql, host, user, pass, db, port, unix_socket, client_flag)){
fprintf(stderr, "无法连接到数据库: %s\n", mysql_error(&mysql));
return 0;
}
// 批量插入数据
char *sql = "INSERT INTO student (id, name, age) VALUES ";
char values[1024] = {0};
// 拼接插入语句中的values部分,具体形式如下:
// (1, 'test1', 18), (2, 'test2', 19), ..., (100, 'test100', 35)
for(int i = 1; i
char temp[50];
sprintf(temp, "(%d, 'test%d', %d),", i, i, i+17);
strcat(values, temp);
}
// 替换字符串中最后一个逗号为分号
int len = strlen(values);
values[len-1] = ';';
// 拼接完整的SQL语句
char *query = (char*)malloc(sizeof(char)*(strlen(sql)+strlen(values)+1));
strcpy(query, sql);
strcat(query, values);
// 插入数据
if(mysql_query(&mysql, query)){
fprintf(stderr, "批量插入失败: %s\n", mysql_error(&mysql));
}
else{
printf("批量插入成功\n");
}
// 关闭数据库连接
mysql_close(&mysql);
return 0;
}
运行程序后,你将获得以下输出:
批量插入成功
至此,我们已经成功地通过C语言实现了MySQL批量插入的功能。如果你有更多的数据需要插入,可以根据实际情况进行修改。