2017-04-20 3 views
0

PostGIS 및 VB의 공간 데이터 형식을 사용하고 있는데이 삽입 쿼리를 사용하여 맵에 배치 된 마커의 데이터를 저장합니다 (마커의 위도와 경도를 저장하려고합니다). 데이터베이스의지도에 배치). 나는 "두 배"와 "소수"를 사용하려고하지만 내가 어딘가 기호를 누락 생각 ..이 SQL 쿼리의 구문 오류는 어디에 있습니까?

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

내가 생각하는 좌표를 저장하는 가장 "전문"방법이지만, 나는 어디 있는지 보지 않는다. 내가 콘솔에서 동일한 데이터를 삽입 할 때 .. 잘 작동

+2

오랫동안 SQL을 결합하는 올바른 방법은 아닙니다. 어떤 "값"이 어떤 열로 매핑되고 모든 것을 텍스트로 전달하는지 지정하지 않습니다. SQL 매개 변수를 사용하십시오. 항상. 또한 [ask]를 읽고 [둘러보기]를 가져 가십시오. – Plutonix

+0

저는 지금 SQL 주입을 던질 것이라고 생각합니다. – Bugs

답변

1

@Plutonix가 정확한지 -하지만 구문 오류 질문에 대한 응답으로, 당신은 여분의 따옴표를 가지고있는 것 같습니다 : 예 :

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

너의 (숫자 변수 대신)

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

너의 (변수로 고정)

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

생성자에 대한 참조 : http://www.postgis.org/docs/ST_GeomFromText.html

+0

이렇게하면 "st_geometryfromtext의 기능을 위해 잘못된 GIS 데이터가 제공되었습니다"라는 메시지 상자가 나타납니다. txtLatBD.Text 및 txtLngBD.Text에 저장된 데이터는 Double입니다. 아마도 쿼리를 실행하기 전에 데이터를 다른 데이터 형식으로 변환해야합니까? – nahuel062

+0

쿼리를 실행하는 대신 화면에 쓰는 것만으로도 현재 쿼리를 볼 수 있습니다. 그런 다음 DB에서 직접 실행할 수 있습니다. –

관련 문제