插入db失败

Insert db fails

本文关键字:失败 db 插入      更新时间:2023-10-16
void InsertEmployeeRec(PGconn *conn, char * fullname)
{
  // Append the SQL statment
  std::string sSQL;
  sSQL.append("INSERT INTO Worker VALUES ('");
  sSQL.append(fullname);
  sSQL.append("')");
  // Execute with sql statement
  PGresult *res = PQexec(conn, sSQL.c_str());
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
    {
        printf("Insert employee record failed");
        PQclear(res);
        CloseConn(conn);
    }
  printf("Insert employee record - OKn");
  // Clear result
  PQclear(res);
}

这是我插入数据库的函数,像这样调用

InsertEmployeeRec(conn,"n");

最后,我得到了错误:

glibc检测到*/home/mert/workspace/project/debug/project: double free or corruption (!prev): 0x0000000001df4050 *

可能是什么问题?

您呼叫PQclear(res);两次

如果Worker表中有多个列,则需要声明它们:

sSQL.append("INSERT INTO Worker (one_column, name, another_one) VALUES ('");

您只需要声明没有默认值的列。