0
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 - OK\n");

  // Clear result
  PQclear(res);
}

这是我插入数据库并像这样调用它的功能

InsertEmployeeRec(conn,"n");

最后,我得到错误:

检测到 glibc * /home/mert/workspace1/Project/Debug/Project: 双重释放或损坏 (!prev): 0x0000000001df4050 *

可能是什么问题?

4

2 回答 2

1

你打PQclear(res);了两次电话。

于 2013-04-01T17:59:25.767 回答
0

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

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

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

于 2013-04-01T17:57:32.823 回答