C程序mysql连接

我正在研究一个简单的c程序,它必须连接到我的数据库,然后执行查询然后关闭连接。

int main() { MYSQL *conn; conn = mysql_init(NULL); if (conn == NULL) { printf("Error %u %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); } if (mysql_real_connect(conn, "localhost", "root", "root", NULL, 8889, NULL, 0)) { printf("Error %u: %s\n", mysql_errno(conn), mysql_error(conn)); exit(1); } if (mysql_query(conn, "create database testdb")) { printf("Error %u: %s",mysql_errno(conn), mysql_error(conn)); exit(1); } mysql_close(conn); return 0; } 

这段代码编译但是当我运行它时,它将在mysql_query()语句之后退出。

返回以下错误:

 Error 2006: MySQL server has gone away 

我使用谷歌搜索答案,最后来到这里:

http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

返回值如果连接成功,则为MYSQL *连接句柄;如果连接>不成功,则为NULL。 对于成功连接,返回值与> first参数的值相同。

http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html

你的联系没有

/ *连接到MySQL数据库服务器的简单C程序* /

  #include  #include  main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "PASSWORD"; /* set me first */ char *database = "mysql"; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* send SQL query */ if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } 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); } 

您的连接失败 – 您的测试应该是:

 if (mysql_real_connect(...) == NULL) { printf("..."); exit(1); } 

mysql_real_connect失败时返回NULL,或成功时返回连接句柄。

–Dave