#include#include#include#include "mysql.h" int main(int argc, char **argv) { MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; mysql_init(&mysql); if (!mysql_real_connect(&mysql, "localhost", "root", "", "test", 0, NULL, 0)) { printf("Connect Error\n"); exit(1); } char *sql_insert = "INSERT INTO user (name, age, address) VALUES ('yu', 18, 'Beijing')"; int ret = 0; int i; char sql[100] = {0}; for (i = 1; i<= 100; i++) { snprintf(sql, sizeof(sql), "('%s_%d', %d, '%s_%d')", "test", i, i, "address", i); strcat(sql_insert, sql); if (i % 10 == 0) { ret = mysql_real_query(&mysql, sql_insert, strlen(sql_insert)); if (ret != 0) { printf("Query Error: %s\n", mysql_error(&mysql)); exit(1); } memset(sql_insert, 0, sizeof(sql_insert)); strcpy(sql_insert, "INSERT INTO user (name, age, address) VALUES "); } else { strcat(sql_insert, ","); } } ret = mysql_real_query(&mysql, sql_insert, strlen(sql_insert)); if (ret != 0) { printf("Query Error: %s\n", mysql_error(&mysql)); exit(1); } mysql_close(&mysql); return 0; }
以上代码中,大家先通过mysql_init函数初始化mysql结构体,然后通过mysql_real_connect函数连接MySQL数据库。接着定义一个sql_insert字符串,用于存放大家要写入数据库的SQL语句。大家可以将多个数据组合成一个SQL语句,一次性写入数据库,这样比单个执行效率高很多。大家在for循环中将要插入的数据逐个拼接成一个完整的SQL语句。当拼接的数据个数达到10个时,就执行一次mysql_real_query函数,将这10个数据一次性写入数据库。当循环结束时,大家将剩余的数据一次性写入数据库。
通过以上代码,大家可以看出使用C语言实现MySQL批量写入数据库的方法,代码简单直观,可以大大提高数据写入效率。