我尝试使用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)附近我的单引号有些可疑。有人可以帮助我吗?
答案 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年。