Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]
От | Brady S Edwards |
---|---|
Тема | Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801] |
Дата | |
Msg-id | BANLkTimQP2YtJZ6SkDng9Vsz319vUDNb_A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801] (Lew <noone@lewscanon.com>) |
Ответы |
Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter
binding not working for PL/PGSQL block JDBC3 Version 9.0-801]
|
Список | pgsql-jdbc |
So, I was just going for a simple quick illustration of the problem that I was running into. I had a meeting and spent 5 minutes typing up a very simple example. The actual code uses tomcat's JNDI based connection pooling which works fine. For the indent, my tabstop is set to 3 in my editor instead of 8, I should have expanded the tab's I guess. The insert statement works. The trying to prepare an anonymous plpgsql block with a ? (in between the $$ $$) does not work, the reason for which was helpfully pointed out by someone else. Your response does have anything to do with the question I was asking. I was hoping to find out how (if it's possible) to execute something like in postgres: PreparedStatement pStmt = conn.prepareStatement("DECLARE oh varchar(10); BEGIN oh := ?; END;"); pStmt.setString(1, "Blah"); On Wed, Apr 27, 2011 at 3:39 PM, Lew <noone@lewscanon.com> wrote: > Brady S Edwards wrote: >> >> try { >> System.out.println("Trying to connect"); >> Class.forName ("org.postgresql.Driver"); >> Properties props = new Properties(); >> props.setProperty("user", PG_USER); >> props.setProperty("password", PG_PASS); >> Connection pgConn = >> DriverManager.getConnection(PG_CONN_PROP, props); >> System.out.println("Looks like connections >> succeeded\n"); >> PreparedStatement pStmt = pgConn.prepareStatement( >> "INSERT INTO soo (zoo) values (?)"); > > This code makes me do a doubletake, and not just because of the ridiculously > wide TAB-based indentation. Why reload the driver class over and over > again? Only the first time does anything. > > One might wish to take the Sun/Oracle advice: > "The DriverManager methods getConnection and getDrivers have been enhanced > to support the Java Standard Edition Service Provider mechanism. JDBC 4.0 > Drivers must include the file META-INF/services/java.sql.Driver. This file > contains the name of the JDBC drivers implementation of java.sql.Driver. For > example, to load the my.sql.Driver class, the > META-INF/services/java.sql.Driver file would contain the entry: > > my.sql.Driver > > [org.postgresql.Driver] > > "Applications no longer need to explictly load JDBC drivers using > Class.forName(). Existing programs which currently load JDBC drivers using > Class.forName() will continue to work without modification." > > You still don't need 'Class.forName()' more than once per driver if you > stick to the old way. > > Personally I prefer JNDI-based approaches to loading DB drivers. I also > usually prefer JPA to raw JDBC, but there are times when JDBC is > unquestionably the better tool. > > -- > Lew > Honi soit qui mal y pense. > http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg > > -- > Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-jdbc > -- Brady Edwards (720) 684-2984 Seagate Technology
В списке pgsql-jdbc по дате отправления: