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);
    }
}

出力:

INSERT に失敗しました: エラー: 解析エラー - 無効なジオメトリ ヒント: POINT、LINESTRING、POLYGON などの有効な OGC WKT ジオメトリ タイプを指定する必要があります

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 に答える