3

PostGIS拡張機能を備えたPostgreSQLデータベースを使用するGISアプリケーションに取り組んでいます。プロジェクト全体のデータ アクセス ロジックを既に作成しており、ジオメトリ値の挿入以外はすべて正常に動作します。

関数呼び出しとしてジオメトリ値を渡す必要があります。

INSERT INTO mygeotable (id, name, geom) VALUES 
    (1, "MyName", ST_GeomFromText('POINT(755888.4156 112458.556)', 23700))

ご覧のとおり、列の値に対してST_GeomFromText PostGIS 関数を呼び出す必要があります。この列は、ADO.NET のビューからの文字列値ですが、テキストとして設定することはできません。INSERTgeomgeomINSERT

INSERTADO.NET は、コマンドを次のように自動的にフォーマットすると思います。

INSERT INTO mygeotable (id, name, geom) VALUES 
    (1, "MyName", "ST_GeomFromText('POINT(755888.4156 112458.556)', 23700)")

引用符が原因で間違っています。

関数呼び出しを使用するようにINSERTコマンドのgeomパラメーターを設定するにはどうすればよいですか?ST_GeomFromText

すべての列にパラメーターを使用します。InsertCommand CommandText は次のとおりです。

INSERT INTO mygeotable (id, name, geom) VALUES (id, name, geom)

geom パラメーター DbType は String です。関数呼び出し用の DbType がありません!

4

1 に答える 1

1

関数呼び出し全体を渡す代わりに、パラメータを数値として関数に渡します。

INSERT INTO mygeotable (id, name, geom) VALUES
    (id, name, ST_GeomFromText('POINT(X Y)', Z))

BTW のような二重引用符は"MyName"、識別子用に予約されているため、有効な文字列にはなりません。文字列は一重引用符で囲む必要があります。

于 2013-04-15T12:03:10.063 に答える