Re: Java Studio Creator Fix/Hack
От | Pucky Loucks |
---|---|
Тема | Re: Java Studio Creator Fix/Hack |
Дата | |
Msg-id | 1E96BBA8-4B9B-11D9-888E-000393CE25C2@h2st.com обсуждение исходный текст |
Ответ на | Re: Java Studio Creator Fix/Hack (Kris Jurka <books@ejurka.com>) |
Список | pgsql-jdbc |
I should have only said HACK not fix... :) Totally understand that there is a better way to do it, I just need to get something working, (this is not for production use) therefore hitting the database is fine for me right now, and all statements are "select * from tablename" again this is specific hack for Java Studio Creator. Can't wait till a real JDBC Developer attacks the problem. Thanks for the awesome work you guys do! Pucky Loucks How2Share Technologies Inc. On 10-Dec-04, at 5:53 PM, Kris Jurka wrote:I s > > > On Fri, 10 Dec 2004, Pucky Loucks wrote: > >> Hi everyone, I noticed at TODO for getMetaData() on the 8.0 and >> figured >> I'd give this task a try. I now am able to use Java Studio Creator >> with Postgresql 7.4.6. >> >> public ResultSetMetaData getMetaData() throws SQLException >> { ResultSet rs = null; >> checkClosed(); >> rs = getResultSet(); >> >> if(rs == null) >> { >> // the following code hack has not been fully tested, therefor use at >> your own risk. >> /// by Pucky Loucks of How2share Technologies (creators of PiXPO) >> >> StatementResultHandler handler = new StatementResultHandler(); >> >> connection.getQueryExecutor().execute(preparedQuery, >> preparedParameters, >> handler, >> 0, >> 0, >> QueryExecutor.QUERY_ONESHOT); >> rs = handler.getResults().getResultSet(); >> } >> >> return rs.getMetaData(); >> } >> ===================END OF CODE HACK===== > > > This patch doesn't really work. It assumes that the PreparedStatement > doesn't have side effects and that all parameters have been set. > > Consider: > > PreparedStatement pst = con.prepareStatement("UPDATE tab SET x=x+1"); > pst.getMetaData(); > pst.execute(); > > Now all of a sudden x = x+2. Actually your patch will throw a > NullPointerException, but that's a simple code issue. > > Consider: > > PreparedStatement pst = con.prepareStatement("SELECT * FROM t WHERE > x=?"); > pst.getMetaData(); > > Fails with: org.postgresql.util.PSQLException: No value specified for > parameter 1. > > The planned way to implement this feature is with the V3 protocol > issuing > Parse/Bind/Describe/ClosePortal without ever executing it. > > Kris Jurka > > ---------------------------(end of > broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html > >
В списке pgsql-jdbc по дате отправления: