當我通過psql
運行下面的sql語句時,它工作正常,但是當我嘗試通過使用preparedstatement
構建它時運行相同的查詢時,它失敗。通過JDBC插入時出錯
INSERT INTO Hvbp
(provider_number, weighted_clinical_process,
weighted_patience_experience, total_performance_score,
coordinates, latitude, longitude, address, city, state, zip)
VALUES
('010092', 43.909090909091, 13.5, 57.409090909091,
'POINT(33.206201 -87.525480)', 33.206200613000476,
-87.52548020899968, '809 UNIVERSITY BOULEVARD EAST', 'TUSCALOOSA', 'AL', '');
我不斷收到的錯誤是
org.postgresql.util.PSQLException: ERROR: column "coordinates" is of type geography but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 203
的coordinates
列的類型的GEOGRAPHY(POINT)
留出周圍的單引號''點(33.206201 -87.525480)''。這是一個函數調用,而不是字符串文字 –
@a_horse_with_no_name,這實際上並不適用於Postgres JDBC驅動程序。 'statement.setString(1,「POINT(1 2)」);'導致投訴ERROR:column「geography」是地理類型的類型,但表達式的類型是字符......' – lreeder
您的SQL語句不會使使用參數,這就是爲什麼我寫這個。對於PreparedStatement,你需要在SQL字符串(*沒有*單引號)和*兩個*'setFloat()'調用中指向(?,?)'來爲每個'提供值?' –