gpt4 book ai didi

mysql - 如何使用 MySQL 与 C 中的 2 个数据库进行交互?

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:31 24 4
gpt4 key购买 nike

我目前正在做一个项目,我必须计算运行者的数量。在某些时候,我必须将数据从我的本地数据库 (mysqlLocal) 传输到我正在工作的高中之一 (mysqlLycee)。

我认为这样做是个好主意,但由于某种原因,我在执行程序时遇到了段错误。

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <mysql.h>


int main(int argc, char *argv[]){
MYSQL mysqlLocal;
MYSQL_RES *result = NULL;
MYSQL_ROW row;
char requete[150];
int num_champs;
char noParticipant[5];
char kmParcourus[3];
mysql_init(&mysqlLocal);
if(!mysql_real_connect(&mysqlLocal,"127.0.0.1","root","debianCCF","localCCF",0,NULL,0))printf("Error on first connect");

sprintf(requete,"SELECT NO_PARTICIPANT, KMPARCOURUS FROM PARTICIPANTS WHERE NO_COURSE = %s",argv[5]);
if(!mysql_query(&mysqlLocal,requete))printf("Error on first query");
result = mysql_use_result(&mysqlLocal);
num_champs=mysql_num_fields(result);
mysql_close(&mysqlLocal);

MYSQL mysqlLycee;
mysql_init(&mysqlLycee);
if(!mysql_real_connect(&mysqlLycee,argv[1],argv[2],argv[3],argv[4],0,NULL,0))printf("Error on second connect");
int i;
while ((row = mysql_fetch_row(result))){
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i=0;i<num_champs;i++){
if(i==0)sprintf(noParticipant,"%.*s", (int) lengths[i], row[i] ? row[i] : "NULL");
if(i==1)sprintf(kmParcourus,"%.*s", (int) lengths[i], row[i] ? row[i] : "NULL");
}
sprintf(requete,"UPDATE PARTICIPANTS SET KMPARCOURUS=%s WHERE NO_PARTICIPANT=%s",kmParcourus,noParticipant);
if(!mysql_query(&mysqlLycee,requete))printf("Error on second query");

}
mysql_free_result(result);
mysql_close(&mysqlLycee);
return 0;
}

我正在使用 Debian 8,并使用以下命令进行编译:

gcc updateLycee.c -o updateLycee -lmysqlclient -L/usr/lib64/mysql -I/usr/include/mysql;

编辑:添加了 mysql 检查,但在启动程序时仍然出现段错误。

最佳答案

您关闭与本地数据库的连接,然后尝试从与该连接关联的结果集中获取行。那是行不通的。

如果你想将数据从一个数据库传输到另一个数据库,那么你必须要么

  • 首先将所有需要的数据从一个数据库中提取到内存中(例如,获取所有行并将您需要的内容存储在普通数组中),或者

  • 保持与同时打开的两个数据库的连接。

关于mysql - 如何使用 MySQL 与 C 中的 2 个数据库进行交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36831467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com