PQexecParams使用单引号失败

时间:2012-04-25 14:13:44

标签: c++ sql libpq

我尝试使用libpq使用以下代码插入我的SQL数据库:

void func(PGconn *conn)
{
    const char * params[2] = { "1", "\'POINT(0 0)\'" };
    res = PQexecParams(conn,
        "INSERT INTO drive_test_point (id, geom) VALUES ($1, ST_GeomFromText($2, 900913));",
        2,
        NULL,
        paramValues,
        NULL,
        NULL,
        1);

    if (PQresultStatus(res) != PGRES_TUPLES_OK)
    {
            fprintf(stderr, "INSERT failed: %s\n", PQerrorMessage(conn));
            PQclear(res);
    }
}

输出:

INSERT失败:错误:解析错误 - 无效的几何体 提示:您必须指定有效的OGC WKT几何类型,例如POINT,LINESTRING或POLYGON

我认为在POINT(0 0)附近我的单引号有些可疑。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您应该使用ST_MakePoint并将其参数作为坐标传递。发挥作用:

  

const char * params [2] = {“” 1,“ 0”,“ 0”};

     

res = PQexecParams(conn,“ INSERT INTO drive_test_point(id,geom)VALUES($ 1,ST_Point($ 2,$ 3))”,NULL,3,NULL,NULL,0);

希望能有所帮助,尽管晚了7年。