2012-02-18 56 views
0

你好我已經寫了一個C程序,它連接到一個MySQL服務器,並執行一個只有一個查詢的文本文件的SQL查詢。assiging使指針整數詭計鑄

#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); 
} 

我無法明白的地方我已經錯了....提前 感謝...

回答

2

這行引起問題: CH1 = CH;

ch1是一個指向字符的指針,而ch是一個字符。

您是否打算將從fp讀取的字節存儲在ch1指向的char數組中?你正在做的是,每一次在while循環中,你都在使用fgetc將它存儲在ch中並且打印它。

然後,當while循環結束時,您正在爲字符指針指定一個字符。我不確定你在做什麼。但是這肯定會導致問題。

2

你在很多方面腳麻:

  1. 你不申報的返回類型或參數爲main
  2. 您正在使用gets。永遠不要使用gets,甚至不要考慮。改爲使用fgets
  3. fgetc返回int,而不是char因此您的ch應該是int。在解決此問題之前,您將無法識別EOF。
  4. 您聲明char chchar *ch1,但將ch指定爲ch1。這就是你的頭銜中的錯誤來自哪裏。
  5. 您的代碼似乎試圖一次將您的SQL提供給MySQL一個字節,並且這不會執行任何有用的操作。我認爲你的意思是使用fgets一次讀取一行SQL文件,這樣你就可以將每一行作爲一條SQL語句提供給MySQL。

你應該花一些時間閱讀你的編譯器的警告開關