2016-04-11 15 views
0

Bir C programını Mysql'ye bağlamaya çalışıyorum.C Mysql Bağlantı işleyicisi

Ben

MYSQL  *conn; 
MYSQL_RES *res; 
MYSQL_ROW row; 

int main (int argc, char *argv[]) 
{ 

    conn = my_init(); 
    mysqll_real_connect(conn,"localhost","user","pass","database",0,NULL,0); 

(ı mysql.h başlığını dahil ettik) ana bölümünde bu kodu var Ve Bağlantı problemi

mysql_query(conn,"show tables"); 
    res = mysql_store_result(conn); 
    while (row = mysql_fetch_row(res)) 
    { 
      fprintf (stdout,"%s\n", row[0]); 
    } 
    fprintf (stdout,"\n%lu rows affected\n", (unsigned long) 
    mysql_num_rows(res)); 

olduğunu

çağrıları ana dışında bir işlevi var Ben kodu bu şekilde

gcc -D__DEBUG__=0 -Wall test.c -lmysql -o test $(mysql_config --libs --include --cflags) 

derlemek zaman olsun bu mesajlar

test.c:162:14: error: ‘conn’ undeclared (first use in this function) 
test.c:162:14: note: each undeclared identifier is reported only once  
for each function it appears in 
test.c:163:6: error: ‘res’ undeclared (first use in this function) 
test.c:164:10: error: ‘row’ undeclared (first use in this function) 

Yani, yalnızca bir bağlantıya sahip olmak ve onu başka bir işlevin içinde yeniden kullanabilir miyim?

Ana çıkışta mysql_close (conn) yapıyorum;

Teşekkür

+0

değişkenler, Conn? Küresel mi? –

cevap

0

Ortak başlık dosyasını yapıp test.c bu dosyayı içermelidir: Örnek res ve satır doğru tanımlanmıştır

#ifndef _MAIN_H 
#define _MAIN_H 1 
#include <mysql/mysql.h> 
extern MYSQL  *conn; 
extern MYSQL_RES *res; 
extern MYSQL_ROW row; 
#endif 
+0

Çok teşekkür ederim –