你好,我已经编写了一个连接到mysql服务器的c程序,并从只有一个查询的文本文件中执行sql查询。
#include <mysql.h>
#include <stdio.h>
main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "127.0.0.1";
char *user = "root";
char *password = "PASSWORD"; /* set me first */
char *database = "har";
conn = mysql_init(NULL);
char ch, file_name[25];
char *ch1;
FILE *fp;
printf("Enter the name of file you wish to see ");
gets(file_name);
fp = fopen(file_name,"r"); // read mode
if( fp == NULL )
{
perror("Error while opening the file.\n");
exit(0);
}
while( ( ch = fgetc(fp) ) != EOF )
printf("%c",ch);
ch1=ch;
/* Connect to database */
if (!mysql_real_connect(conn, server,
NULL , NULL, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(0);
}
printf("%c",ch);
/* send SQL query */
if (mysql_query(conn, ch1)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(0);
}
res = mysql_use_result(conn);
/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[0]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
fclose(fp);
}
我无法理解我哪里出错了...... 提前谢谢......
答案 0 :(得分:2)
这是造成问题的原因: CH1 = CH;
ch1是指向一个字符的指针,而ch是一个字符。
您是否打算将从fp读取的字节存储在ch1指向的char数组中?你正在做的是,每次在while循环中你都在使用fgetc将它存储在ch中并打印它。
然后,当while循环结束时,您将char指定给char指针。我不确定你是怎么做的。但这肯定会导致问题。
答案 1 :(得分:2)