JDBC, PrepareStatement and TimeStamp problem
От | Jeffrey Leegon |
---|---|
Тема | JDBC, PrepareStatement and TimeStamp problem |
Дата | |
Msg-id | 43C41640.8010000@acm.org обсуждение исходный текст |
Ответы |
Re: JDBC, PrepareStatement and TimeStamp problem
|
Список | pgsql-jdbc |
I get an error with the timestamps when running the following code: (Varibbles currentTrainStart and stop are GregorianCalendars) String tableName = "\"AdultData\""; String tempSql = "SELECT \"Age\",\"Gender\",\"PrimaryLanguage\",\"TimeOfDay\",\"DayOfWeek\",\"ChiefComplaint\",\"BodyFluidIso\",\"RespIso\",\"Acuity\",\"Consult\",\"Labs\",\"Radiology\","; tempSql+= "\"EKG\",\"MOA\",\"Admitted\" FROM ? "; tempSql +="WHERE \"DATE_ADMITTED\">= ? AND \"DATE_ADMITTED\"< ? ;"; query = conn.prepareStatement(tempSql); query.setString(1, tableName); Timestamp startTrain = new Timestamp(currentTrainStart.getTimeInMillis()); query.setTimestamp(2,startTrain); Timestamp stopTrain = new Timestamp(stop.getTimeInMillis()); query.setTimestamp(3, stopTrain); System.out.println(query.toString()); query.executeQuery(); // query.clearParameters(); When I execute the following code I get the error: java.sql.SQLException: ERROR: syntax error at or near "$1" at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1482) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1267) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:186) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:392) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:330) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:240) at TemporalDataSetCreator.getNextDataSet(TemporalDataSetCreator.java:180) at SequentialBNTest.main(SequentialBNTest.java:31) After initiating the places holders in the prepared statement and call toString() I get the following line going to the DB: SELECT "Age","Gender","PrimaryLanguage","TimeOfDay","DayOfWeek","ChiefComplaint","BodyFluidIso","RespIso","Acuity","Consult","Labs","Radiology","EKG","MOA","Admitted" FROM "AdultData" WHERE "DATE_ADMITTED">= 2004-05-10 00:00:00.000000+0100 AND "DATE_ADMITTED"< 2004-05-31 00:00:00.000000+0100 Which if I put in pgAdmin III and add single quotes around the Timestamps if runs fine. If I add \' around the ? in the prepared statement it gives the ? to the DB and throws and error. What am I doing wrong? Thanks, Jeff
В списке pgsql-jdbc по дате отправления: