3

我正在开发一个使用 PostgreSQL 数据库和 PostGIS 扩展的 GIS 应用程序。我已经为整个项目创建了数据访问逻辑,除了几何值插入之外一切正常。

我必须将几何值作为函数调用传递:

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

如您所见,我必须为列值调用ST_GeomFromText PostGIS 函数。此列是 ADO.NET 视图中的字符串值,但不能将其设置为.INSERTgeomgeomINSERT

我认为 ADO.NET 会自动以INSERT这种方式格式化我的命令:

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)

几何参数 DbType 是字符串。函数调用没有 DbType!

4

1 回答 1

1

将参数作为数字传递给函数,而不是传递整个函数调用:

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

顺便说一句,像 in 这样的双引号"MyName"不会生成有效的字符串,因为它们是为标识符保留的。字符串应该用单引号括起来。

于 2013-04-15T12:03:10.063 回答