[pgsql-jp: 32992] Q) DbUtils & postgresql.jar

Yamada Ken Takeshi ken @ tydfam.jp
2004年 5月 25日 (火) 22:51:51 JST


  山田@町田市です。
  困った時にしか現れず、恐縮です。また、ひょっとしたら、PostgreSQLの
問題ではないのかも知れませんが、御容赦ください。

  Java+Struts で開発しようとしているのですが、SQL の所をO/Rにする程
の事は無いし、でも楽したい、ということで commons-dbutils を使ってみよう
と考え WEB+DB No.20 の記事(p.66)を HSQLDB から PostgreSQL にして
実験してみたのですが、

java.sql.SQLException: No suitable driver
   at java.sql.DriverManager.getConnection(DriverManager.java:532)
   at java.sql.DriverManager.getConnection(DriverManager.java:171)
   at DbUtilTest.dbutilsTest.execute(dbutilsTest.java:34)
   at DbUtilTest.dbutilsTest.main(dbutilsTest.java:64)

と、driver が見付からない、と言って来てしまいます。
プログラムの内容は、WEB+DB No.20 の記事と同じで、DB を HSQLDB から
postgresql にしただけなのですが、、、。
Driver の登録が間違っている? のかとも思ったのですが、同様にして JDBCTest 
は動いているので、、、??

どなたか、私の間違いを御指摘頂けませんでしょうか?

以下長くなりますが、使ったソースです。

======================  DbUtilTest.java ===============
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.postgresql.Driver;

public class dbutilsTest {
	public static void execute() {

		try {
			Connection conn = null;
			try {
				DriverManager.registerDriver(new Driver());
				conn =
					DriverManager.getConnection(
						"jdbc:postogresql://localhost/webapps",
						"ken",
						"");

				QueryRunner runner = new QueryRunner();
				List accounts =
					(List) runner.query(
						conn,
						"select * from account",
						new BeanListHandler(Account.class));

				Account temp;
				for (int i = 0; i < accounts.size(); i++) {
					temp = (Account) accounts.get(i);
					System.out.println(temp.getId() + ", " + temp.getName());
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if (conn != null)
					conn.close();
			}
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
	}

	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		execute();
		long end = System.currentTimeMillis();
		System.out.println(end - start + " ms");
	}
}
======================== JDBCTest.java =========================
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.postgresql.Driver;

public class jdbcTest {

	public static void execute() {
		try {
			Connection conn = null;
			Statement stmt = null;
			ResultSet rs = null;
			try {
				DriverManager.registerDriver(new Driver());

				conn =
					DriverManager.getConnection(
						"jdbc:postgresql://localhost/webapps",
						"ken",
						"");

				stmt = conn.createStatement();
				rs = stmt.executeQuery("select * from account");
				rs.next();

				do {
					System.out.println(
						rs.getObject(1) + ", " + rs.getObject(2));
					rs.next();
				} while (!rs.isLast());
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if (rs != null)
					rs.close();

				if (stmt != null)
					stmt.close();

				if (conn != null)
					conn.close();
			}
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
	}

	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		execute();
		long end = System.currentTimeMillis();
		System.out.println(end - start + " ms");
	}
}



pgsql-jp メーリングリストの案内