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