Subject Re: [Firebird-Java] Re: JayBird: Problems with Prepared Statements
Author David Johnson
On Tue, 2005-09-06 at 15:51 +0000, pifproject wrote:
> > Just type few words - Yahoo might decide
> > to remove their message database.
> Okay, I'll try to formulate something as a description.
> > Then why do you need SQLstatement parameter later?
> > For now I can imagine only one usage for it - take
> > an object (instance of java.sql.Statement interface)
> > and display it to the user.
> I also display that INSERT String as information in the System.out,
> but the conversion is primarily needed in order to have a single
> 'statementExecutor(String sqlStatement)' method, which I can also
> utilize for other non-prepares SQL statements.
> > But then, if you have a single method that takes string
> > as parameter, why do you need to call toString() method
> > to return the SQL string that you just passed?
> It happened that the PostgreSQL driver adds some additional characters
> before the "INTERT INTO ..." (may sound strange, but that was what
> happened) and I have to cut those out before passing the statement for
> execution.

The single executor defeats the purpose of the PreparedStatement. It
also sounds like the postgreSQL driver has bugs. It is not fair to ask
standards compliant drivers to conform to a faulty implementation.

> > If you expect the toString() method to convert parameter
> > marks ('?') into the specified string values - that's
> > another story. It was already discussed here
> I do not think that I expect that, I want to convert the prepared
> statement to String after the '?'s have been substituted with their
> respective values.

The PreparedStatement does not need the original query text once it has
been prepared. Only the statement handle and the parameters are passed
across the wire.