如何将InsertCommand参数设置为函数调用

本文关键字:设置 函数调用 参数 InsertCommand | 更新日期: 2023-09-27 18:09:16

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

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

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

如您所见,对于geom列的值,我必须调用INSERT上的ST_GeomFromTextPostGIS函数。此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命令文本为:

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

geom参数DbType为String。函数调用没有DbType!

如何将InsertCommand参数设置为函数调用

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

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

"MyName"中那样的BTW双引号不会生成有效的字符串,因为它们是为标识符保留的。字符串应该用单引号括起来。