From: walter harms Date: May 7 2009 1:10pm Subject: Re: Memory corrupting, while retrive the query generated List-Archive: http://lists.mysql.com/mysql/217443 Message-Id: <4A02DDB0.7010902@bfs.de> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit hi ravi, this works for me. it should help you to get a starting point re, wh /* simpple DB connect test gcc -L/usr/lib/mysql -lmysqlclient connect.c */ #define _GNU_SOURCE #include #include #include int main() { MYSQL *MySQL; MYSQL_ROW row; MYSQL_RES *res; char *dbhost = "localhost"; char *dbuser = "dbuser"; char *dbpass = ""; char *dbname = "mysql"; char *sel_smt; int ret; MySQL = mysql_init(NULL); if (MySQL == NULL) { fprintf(stderr, "Connection failed\n"); exit(1); } if (mysql_real_connect (MySQL, dbhost, dbuser, dbpass, dbname, 0, NULL, 0) < 0) { fprintf(stderr, "%s\n", mysql_error(MySQL)); exit(1); } asprintf(&sel_smt, "select count(*) from user"); if (mysql_query(MySQL, sel_smt) != 0) { fprintf(stderr, "%s\n", mysql_error(MySQL)); exit(1); } res = mysql_store_result(MySQL); if (res == NULL) { fprintf(stderr, "%s\n", mysql_error(MySQL)); exit(1); } row = mysql_fetch_row(res); printf("%s\n", row[0] ? row[0] : "NULL"); free(sel_smt); mysql_free_result(res); mysql_close(MySQL); exit(0); } Ravi raj schrieb: > Dear All, > > I want to connect MYSQL with following C application , while i'm trying to retrive the query generated , its corrupting the memory. > > Is there any solution , to retrive the query generated with out any memory crashes? > > Please help me to solve this problem. > > code as follows, > > ------------------------------------------------------------------------------------------------------------------------------------------------------------- > > 1.. #include > 2.. #include > 3.. #include > 4.. #include "mysql.h" > 5.. ? > 6.. int main() > 7.. { > 8.. MYSQL *conn; > 9.. MYSQL_RES *res; > 10.. MYSQL_ROW row; > 11.. MYSQL_FIELD *field; > 12.. unsigned int i = 0; > 13.. char table_type[30]; > 14.. char buffer[200]; > 15.. unsigned int num_fields; > 16.. char *server = "localhost"; > 17.. char *user = "root"; > 18.. char *password = ""; /* set me first */ > 19.. char *database = "test"; > 20.. conn = mysql_init(NULL); > 21.. ? > 22.. /* Connect to database */ > 23.. if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) > 24.. { > 25.. fprintf(stderr, "%s\n", mysql_error(conn)); > 26.. exit(1); > 27.. } > 28.. ? > 29.. if(mysql_ping(conn)) > 30.. { > 31.. printf("error in connection \n"); > 32.. exit(1); > 33.. } > 34.. sprintf(table_type, "method"); > 35.. ? > 36.. sprintf(buffer, "select mid, mname from %s;", table_type); > 37.. mysql_query(conn, buffer); > 38.. res = mysql_store_result(conn); > 39.. num_fields = mysql_num_fields(res); > 40.. > 41.. while ((row = mysql_fetch_row(res)) != NULL) > 42.. { > 43.. for(i = 0;i < num_fields;i++) //here is the problem , num_fields is corrupting > 44.. printf("%s\n", row[i]?row[i]:"NULL"); > 45.. } > 46.. mysql_free_result(res); > 47.. mysql_close(conn); > 48.. return 0; > 49.. } > ----------------------------------------------------------------------------------------------------------------------------------------------------------------- > > > Regards, > Raviraj > ----------------------------------------- > mobile : (91) (0) 9742293013 > www.vinjey.com > P Think before you print > /* work should be challenging > and the challenge should be fun */