【问题标题】:Where is the syntax error in this sql query?此 sql 查询中的语法错误在哪里?
【发布时间】:2017-09-17 09:33:26
【问题描述】:

我正在使用来自 VB 的 PostGIS 和空间数据类型,并且我有这个插入查询,我用它来保存放置在地图上的标记的数据(我想保存地图的纬度和经度)标记放置在数据库中的地图上)。我尝试使用“double”和“decimal”,但这是我认为最“专业”的保存坐标的方式..

$"insert into personas values ('" & idpers & "','" & txtNombre.Text & "','" & txtApe.Text & "','" & txtTel.Text & "','" & txtDire.Text & "','" & cboxZona.SelectedItem & "',ST_GeomFromText('POINT('" & txtLatBD.Text & "' '" & txtLngBD.Text & "')'))"

我想我在某处遗漏了一个符号,但我不知道在哪里。当我从控制台插入相同的数据时,它工作正常..

【问题讨论】:

  • 长期以来,这并不是将 SQL 放在一起的正确方法。您没有指定哪些“值”映射到哪一列并将所有内容作为文本传递。使用 SQL 参数。总是。也请阅读How to Ask 并采取tour
  • 我想我现在要抛出一些 SQL 注入。

标签: mysql vb.net visual-studio postgis


【解决方案1】:

@Plutonix 是正确的 - 但在回答您的语法错误问题时,您似乎有额外的引号: 示例:

ST_GeomFromText('POINT(-70.060544 40.28707)');

你的(数字替换变量):

ST_GeomFromText('POINT('-70.060544' '40.28707')')

你的(用变量固定):

ST_GeomFromText('POINT(" & txtLatBD.Text & " " & txtLngBD.Text & ")')

构造函数参考:http://www.postgis.org/docs/ST_GeomFromText.html

【讨论】:

  • 当我这样做时,会出现一个 Msgbox,上面写着“提供给函数 st_geometryfromtext 的 GIS 数据无效”。 txtLatBD.Text 和 txtLngBD.Text 中保存的数据为 Double。也许我应该在执行查询之前将数据转换为另一种数据类型?
  • 试着把查询写到屏幕上而不是运行它,这样你就可以看到你得到了什么。然后你也可以直接在数据库上运行它
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多