目次

JDBC

JDBC Driver Typeについては@ITの記事を参照してください。

JDBC仕様は、sunのJDBCドキュメント

ドライバクラス & 接続URL

JDBC URLのポート番号は、データベースのデフォルトのポート番号です。デフォルトを使用している場合、多くのドライバではURLのポート番号を省略できます。

ここに掲載している情報は基本的にRDBMSデベロッパ・プロジェクト公式のドライバソフトウェアの設定です。データベースによってはサードパーティやオープンソースで開発されているドライバが存在します。

JDBC-ODBC Bridge
(Type1)
sun.jdbc.odbc.JdbcOdbcDriver
jdbc:odbc:DataSourceName
Type1はODBCを使用してデータベースにアクセス。ODBCドライバのインストールとODBCアドミニストレータ設定が必要。DataSourceNameにはODBCで設定した名前を入れる。
DB2
Type2
COM.ibm.db2.jdbc.app.DB2Driver (v8.1まで)
com.ibm.db2.jcc.DB2Driver (DB2 v8.1.2以降)
jdbc:db2:DataSourceName
DB2クライアントのインストールが必要。DataSourceNameには、DB2構成アシスタントで設定したデータソース名を記述する。新しいドライバはType4と同じクラスで、URLでどちらのTypeを使うか区別する。
DB2
Type3
COM.ibm.db2.jdbc.net.DB2Driver
jdbc:db2://127.0.0.1:50000/DataBaseName
JDBC Type3ドライバのサポートは終了しており、Type4の使用が推奨されている。
DB2
Type4
com.ibm.db2.jcc.DB2Driver
jdbc:db2://127.0.0.1:50000/DataBaseName
DB2バージョン8.1からサポートされた。DB2クライアントのインストールは不要。
Oracle
Type4
oracle.jdbc.driver.OracleDriver
oracle.jdbc.OracleDriver (9i以降)
jdbc:oracle:thin:@127.0.0.1:1521:SID
Oracleは他のDBと違い、URLのプロトコルとホストの区切りが // ではなく @ となっている。9i以降でも8iまでのドライバクラスが使えるが、そちらは今後のメンテナンスされないのであたらしいドライバクラスが推奨されている。
Oracle
Type2
oracle.jdbc.driver.OracleDriver
jdbc:oracle:oci8:@TNS (for Oracle 8i)
jdbc:oracle:oci:@TNS (for Oracle 9i or 10g)
tnsnames.oraファイルにデータソースの設定を書く。Oracleクライアントが必要。
SQL Server 2000
Type4
com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=DBName
MS製なのでWindows版しかないが、導入が容易でバランスのとれたチューニングが施されている。このドライバはMSDE 2000でも使用可能。
SQL Server 2005
Type4
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://localhost:1433;DatabaseName=DBName
SQLServer 2005。旧バージョンからドライバクラスもURLも微妙に変更されているので注意。参考
Firebird
Type 4
org.firebirdsql.jdbc.FBDriver
jdbc:firebirdsql://127.0.0.1:3050/DataBasePath
オープンソースのRDB。DataBasePathにはサーバ上のデータベースファイル(.gdb)への絶対パスを指定するらしい。
MySQL
Type 4
com.mysql.jdbc.Driver
jdbc:mysql://127.0.0.1:3306/DBName
GPLライセンスと商用ライセンスで利用できるRDB。Movable Type等のBlogツールでも採用されている。
PostgreSQL
Type 4
org.postgresql.Driver
jdbc:postgresql://127.0.0.1:5432/DBName
BSDライセンスで配布されており、商用でも無償で使用可能。中小規模システム、個人用DBとしてMySQLと並んで人気。
HSQLDBorg.hsqldb.jdbcDriver
jdbc:hsqldb:hsql://127.0.0.1:9001/databasename
高速、軽量、Pure Javaの組み込み向けRDBMS。jarファイル一つで動作する。このURLはサーバモードで起動したHSQLDBにアクセスするURL。
org.hsqldb.jdbcDriver
jdbc:hsqldb:file:databasename
HSQLDBをインプロセスモードで起動する。javaアプリケーションと同じVM上で起動し、組み込みのデータベースとして使う。終了時にSHUTDOWN命令を送らないとデータが永続化されない。URLの最後に;shutdown=trueを付加すると終了時にデータが自動的に保存される。
org.hsqldb.jdbcDriver
jdbc:hsqldb:mem:databasename
HSQLDBをインメモリモードで起動する。インメモリモードはスタンドアロンモードと同じだがデータを永続化しない。JavaVMを終了するとデータが失われる。
Derbyorg.apache.derby.jdbc.EmbeddedDriver
jdbc:derby:databasename;create=true
Java言語で書かれた組み込み用のデータベース。create=trueはオプションで、databasenameが見つからない場合に新規データベースを作成する。
OpenBase
Type4
com.openbase.jdbc.ObDriver
jdbc:openbase://localhost/DataBaseName
MacOSXの前身NEXTSTEP/OPENSTEP上で開発されたRDBMSらしい。Linux版、Windows版もあるようだ。
H2 org.h2.Driver
jdbc:h2:tcp://localhost:9092/DataBasePath
HSQLの開発者が作成した組み込みDB。DBをサーバとして起動した場合のURL。
org.h2.Driver
jdbc:h2:DataBasePath
組み込みDBとして使用する場合のURL。
Sybase ASE
Type4
com.sybase.jdbc.SybDriver
jdbc:sybase:Tds:localhost:8001/databasename
一時期MSSQLServerとして提供されていたこともあるRDBMS。そのためか両製品をサポートしているサードパーティ製やオープンソースのドライバがある。
SQLite
Type4(?)
org.sqlite.JDBC
jdbc:sqlite:databasefile_path
SQLiteにアクセスするJDBCドライバ。NestedVMというものをつかってPure Javaのドライバとしている?らしい…

素のJDBCで接続

素のConnectionを使って接続

public class Main {
    public static void main(String[] a) {
        System.setProperty("jdbc.drivers", "oracle.jdbc.driver.OracleDriver");
        try {
            Connection con = java.sql.DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","username","password");
            try {
                Statement st = con.createStatement();
                int rowCount = st.executeUpdate("INSERT INTO test (hoge, fuga) VALUES ('a', 'b')");
                ResultSet re = st.executeQuery("SELECT hoge FROM test");
                while(re.next()) {
                    System.out.println(re.getString(1));
                }
                re.close();
                st.close();
            } finally {
                con.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}