首页 文章

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

提问于
浏览
3

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

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

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

如您所见,我必须在 INSERT 上调用 ST_GeomFromText PostGIS函数作为 geom 列值 . 此 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!

1 回答

  • 1

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

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

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

相关问题