程序在每次执行查询时挂起

Program hanging every time I execute a query

本文关键字:查询 挂起 执行 程序      更新时间:2023-10-16

不知道什么原因,当程序试图执行

时崩溃了
mysql_query(mysql,"CREATE TABLE writers(name VARCHAR(25))"); 

虽然查询被成功执行并且表被创建,但是windows报怨程序停止响应,但实际上并没有。

下面是我的main函数。

int main()
{
    MYSQL* mysql;
    mysql_init(mysql);
    mysql_real_connect(mysql,"localhost","root","xxxx","test",0,NULL,0);
    mysql_query(mysql,"CREATE TABLE writers(name VARCHAR(25))"); // 'Program stops responding' without actually crashing.
    mysql_close(mysql);
    getchar();
    return 0;
}

你对API的使用是错误的,你正在传递一个悬浮指针给mysql_init不检查单个返回值。别那样做。

您可以这样转换代码:

MYSQL* mysql = mysql_init(NULL);
if (!mysql) {
  // HANDLE THE ERROR
}
if (!mysql_real_connect(mysql,"localhost","root","xxxx","test",0,NULL,0)) {
  // HANDLE THE ERROR
}
if (mysql_query(mysql,"CREATE TABLE writers(name VARCHAR(25))")) {
  // HANDLE THE ERROR
}
mysql_close(mysql); // No error checking here, that's ok,
                    // it doesn't report errors
                    // But just for this call. All others => check.
getchar();
return 0;