JDBC Driver Typeについては@ITの記事を参照してください。
JDBC仕様は、sunのJDBCドキュメント
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まで) |
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 |
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) | |
| 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と並んで人気。 | |
| HSQLDB | org.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を終了するとデータが失われる。 | |
| Derby | org.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のドライバとしている?らしい… |
素の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(); } } }