我正在开发一个使用PostgreSQL数据库和PostGIS扩展的GIS应用程序。我已经为整个项目创建了数据访问逻辑,除了几何值插入外,一切正常。
我必须将几何值作为函数调用传递:
INSERT INTO mygeotable (id, name, geom) VALUES
(1, "MyName", ST_GeomFromText('POINT(755888.4156 112458.556)', 23700))
如您所见,我必须在INSERT
上为geom
列值调用 ST_GeomFromText PostGIS函数。此geom
列是ADO.NET视图中的字符串值,但不能将其设置为INSERT
上的文本。
我认为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)
geom参数DbType是String。函数调用没有DbType!
答案 0 :(得分:1)
将参数作为数字传递给函数,而不是传递整个函数调用:
INSERT INTO mygeotable (id, name, geom) VALUES
(id, name, ST_GeomFromText('POINT(X Y)', Z))
BT "MyName"
中的双引号不会生成有效的字符串,因为它们是为标识符保留的。字符串应该用单引号括起来。