Thread: Is this usage correct ?
Is it correct to use a preparedStatement with no variable element, as this: PreparedStatement stmp=conn.prepareStatement("delete from table where oid="+oid); stmt.excuteUpdate(); Or is it mandatory to use : PreparedStatement stmp=conn.prepareStatement("delete from table where oid=?"); stmt.setInt(1,oid); stmt.excuteUpdate(); -- Guillaume Rousse Iremia - Universit� de la R�union Sleep doesn't exists. Just lack of cafeine.
In theory it would be ok, but as PreparedStatement extends Statement, why cause the extra overhead and just use Statement? Peter -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council. -----Original Message----- From: Guillaume Rousse [mailto:Guillaume.Rousse@univ-reunion.fr] Sent: Wednesday, April 19, 2000 10:47 AM To: pgsql-interfaces@postgresql.org Subject: [INTERFACES] Is this usage correct ? Is it correct to use a preparedStatement with no variable element, as this: PreparedStatement stmp=conn.prepareStatement("delete from table where oid="+oid); stmt.excuteUpdate(); Or is it mandatory to use : PreparedStatement stmp=conn.prepareStatement("delete from table where oid=?"); stmt.setInt(1,oid); stmt.excuteUpdate(); -- Guillaume Rousse Iremia - Université de la Réunion Sleep doesn't exists. Just lack of cafeine.
Just as i use PreparedStatement elsewhere in the code, i'd like to use the same pattern. Le mer, 19 avr 2000, Peter Mount a �crit : > In theory it would be ok, but as PreparedStatement extends Statement, > why cause the extra overhead and just use Statement? > > Peter > > -- > Peter Mount > Enterprise Support > Maidstone Borough Council > Any views stated are my own, and not those of Maidstone Borough Council. > > > > -----Original Message----- > From: Guillaume Rousse [mailto:Guillaume.Rousse@univ-reunion.fr] > Sent: Wednesday, April 19, 2000 10:47 AM > To: pgsql-interfaces@postgresql.org > Subject: [INTERFACES] Is this usage correct ? > > > Is it correct to use a preparedStatement with no variable element, as > this: > PreparedStatement stmp=conn.prepareStatement("delete from table where > oid="+oid); > stmt.excuteUpdate(); > > Or is it mandatory to use : > PreparedStatement stmp=conn.prepareStatement("delete from table where > oid=?"); > stmt.setInt(1,oid); > stmt.excuteUpdate(); > > -- > Guillaume Rousse > Iremia - Universit� de la R�union > > Sleep doesn't exists. Just lack of cafeine. -- Guillaume Rousse Iremia - Universit� de la R�union Sleep doesn't exists. Just lack of cafeine.
Most RDBMS support two modes of queries. Statements and prepared statements. Statements are SQL strings that are parsed and processed in one go. Prepared statements are pre-prepared and can be reused any number of times. Since parameters tend to change across method invocation, they support bound parameters (the '?' thingy). In terms of performance statements are slightly faster if used only once (Oracle 7) and prepared statements are way faster if used twice or more times (Oracle 7 again). The RDMBS will construct a query plan during preperation and only once for a given statement, thus saving a non-marginal cost (especially if the query is rather complex). In fact, in some instances where the results of a query are less than 100 records (w/o long binary/char fields), using prepared statement can achive an 80% performance improvement. arkin Peter Mount wrote: > > In theory it would be ok, but as PreparedStatement extends Statement, > why cause the extra overhead and just use Statement? > > Peter > > -- > Peter Mount > Enterprise Support > Maidstone Borough Council > Any views stated are my own, and not those of Maidstone Borough Council. > > -----Original Message----- > From: Guillaume Rousse [mailto:Guillaume.Rousse@univ-reunion.fr] > Sent: Wednesday, April 19, 2000 10:47 AM > To: pgsql-interfaces@postgresql.org > Subject: [INTERFACES] Is this usage correct ? > > Is it correct to use a preparedStatement with no variable element, as > this: > PreparedStatement stmp=conn.prepareStatement("delete from table where > oid="+oid); > stmt.excuteUpdate(); > > Or is it mandatory to use : > PreparedStatement stmp=conn.prepareStatement("delete from table where > oid=?"); > stmt.setInt(1,oid); > stmt.excuteUpdate(); > > -- > Guillaume Rousse > Iremia - Université de la Réunion > > Sleep doesn't exists. Just lack of cafeine. -- ---------------------------------------------------------------------- Assaf Arkin www.exoffice.com CTO, Exoffice Technologies, Inc. www.exolab.org
This is one of the reasons why I said Statement is better. The other reason, is because postgresql doesn't yet support them, we currently do the substitution in the driver, which is a large overhead compared with Statement. Peter -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council. -----Original Message----- From: Arkin [mailto:arkin@exoffice.com] Sent: Wednesday, April 19, 2000 9:11 PM To: Peter Mount Cc: 'Guillaume Rousse'; pgsql-interfaces@postgresql.org Subject: Re: [INTERFACES] Is this usage correct ? Most RDBMS support two modes of queries. Statements and prepared statements. Statements are SQL strings that are parsed and processed in one go. Prepared statements are pre-prepared and can be reused any number of times. Since parameters tend to change across method invocation, they support bound parameters (the '?' thingy). In terms of performance statements are slightly faster if used only once (Oracle 7) and prepared statements are way faster if used twice or more times (Oracle 7 again). The RDMBS will construct a query plan during preperation and only once for a given statement, thus saving a non-marginal cost (especially if the query is rather complex). In fact, in some instances where the results of a query are less than 100 records (w/o long binary/char fields), using prepared statement can achive an 80% performance improvement. arkin Peter Mount wrote: > > In theory it would be ok, but as PreparedStatement extends Statement, > why cause the extra overhead and just use Statement? > > Peter > > -- > Peter Mount > Enterprise Support > Maidstone Borough Council > Any views stated are my own, and not those of Maidstone Borough Council. > > -----Original Message----- > From: Guillaume Rousse [mailto:Guillaume.Rousse@univ-reunion.fr] > Sent: Wednesday, April 19, 2000 10:47 AM > To: pgsql-interfaces@postgresql.org > Subject: [INTERFACES] Is this usage correct ? > > Is it correct to use a preparedStatement with no variable element, as > this: > PreparedStatement stmp=conn.prepareStatement("delete from table where > oid="+oid); > stmt.excuteUpdate(); > > Or is it mandatory to use : > PreparedStatement stmp=conn.prepareStatement("delete from table where > oid=?"); > stmt.setInt(1,oid); > stmt.excuteUpdate(); > > -- > Guillaume Rousse > Iremia - Université de la Réunion > > Sleep doesn't exists. Just lack of cafeine. -- ---------------------------------------------------------------------- Assaf Arkin www.exoffice.com CTO, Exoffice Technologies, Inc. www.exolab.org