2

我正在尝试使用带有以下代码的 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);
    }
}

输出:

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

我认为我在 POINT(0 0) 周围的单引号有些可疑。有人能帮我吗?

4

1 回答 1

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 年。

于 2019-01-03T02:25:51.547 回答