2
스키마 위치에서 위치 정보를 가져 오려고합니다. Postgres 버전은 9.3.15
이고 사용되는 maven jar는 9.4-1200-jdbc4
우분투 14.04 LTS입니다. 연결 풀링에 대해서는 mchange
버전 0.9.5.2
을 사용하고 있습니다.Postgres를 사용하여 ID를 가져올 수 없습니다. 저장 함수 - 형식 int의 값이 잘못되었습니다.
org.postgresql.util.PSQLException: Bad value for type int : -,24.7477464699999992,32.7477464700000027,232328,xxxx,xxxxx,xxxx,"xxxx",India,landmark
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2962)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2145)
at com.mchange.v2.c3p0.impl.NewProxyResultSet.getInt(NewProxyResultSet.java:425)
at com.creo.hike.direct.storage.jdbc.service.LocationService.getLocation(LocationService.java:74)
at com.creo.hike.direct.storage.jdbc.service.LocationService.getLocation(LocationService.java:66)
at com.creo.hike.direct.testapp.App.testLocationService(App.java:38)
at com.creo.hike.direct.testapp.App.main(App.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
위치 스키마. 생성 LocationId
와 위치를 가져하려고 할 때 위치의
CREATE TABLE Location (
LocationId SERIAL PRIMARY KEY,
Latitude DOUBLE PRECISION NOT NULL DEFAULT 0.0,
Longitude DOUBLE PRECISION NOT NULL DEFAULT 0.0,
Pincode INTEGER NOT NULL DEFAULT 0,
InnerAddress TEXT NOT NULL DEFAULT 'Unknown',
Locality TEXT NOT NULL DEFAULT 'Unknown',
City TEXT NOT NULL DEFAULT 'Unknown',
State TEXT NOT NULL DEFAULT 'Unknown',
Country TEXT NOT NULL DEFAULT 'Unknown',
Landmark TEXT NOT NULL DEFAULT 'Unknown'
);
삽입이 잘 작동하지만, 그것은 저장 기능을 사용하여 실패. 저장 프로 시저는 - 내가 여기서 뭔가를 놓치고 경우 gets_location_by_id
CREATE OR REPLACE FUNCTION gets_location_by_id(
localId INTEGER
) RETURNS Location AS $$
DECLARE
row Location%ROWTYPE;
BEGIN
SELECT * INTO row
FROM Location
WHERE LocationId = localId;
RETURN row;
END;
$$ LANGUAGE plpgsql;
이, 알려 주시기 바랍니다 ID로 위치를 얻기. ID로 위치를 가져 오는 Java 코드는
String sql = "SELECT gets_location_by_id(?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, locationId);
ResultSet resultSet = statement.executeQuery();
location = new Location(
resultSet.getInt(1),
resultSet.getDouble(2),
resultSet.getDouble(3),
resultSet.getInt(4),
resultSet.getString(5),
resultSet.getString(6),
resultSet.getString(7),
resultSet.getString(8),
resultSet.getString(9),
resultSet.getString(10));
가 확실 SELECT *이 LocationId를 반환하는 것을 당신은 쿼리의 행 소스로 기능을 사용하여 아주 쉽게이 문제를 해결할 수 , 위도, 경도, Pincode, ...이 정확한 순서로 행에? –
예. 돌아왔다. – Vish