我正在编写一个简单的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我用谷歌搜索答案,结果如下:
发布于 2010-08-11 04:46:39
返回值
如果连接成功,则为MYSQL*连接句柄;如果连接失败,则为NULL。如果连接成功,则返回值与第一个参数的值相同。
http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html
您的连接未建立
发布于 2013-11-27 20:26:42
连接到MySQL数据库服务器的/*简单C程序*/
#include <mysql.h>
#include <stdio.h>
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);
}发布于 2010-08-11 04:44:03
您的连接失败-您的测试应该是:
if (mysql_real_connect(...) == NULL) {
printf("...");
exit(1);
}mysql_real_connect在失败时返回NULL,或者在成功时返回连接句柄。
--戴夫
https://stackoverflow.com/questions/3453168
复制相似问题