| |
java:jdbc [2009/04/24 04:17] – 作成 - 外部編集 127.0.0.1 | java:jdbc [2023/04/05 13:54] (現在) – 削除 nullpon |
---|
====== JDBC ====== | |
JDBC Driver Typeについては[[http://www.atmarkit.co.jp/fjava/rensai/jdbc01/jdbc01.html|@ITの記事]]を参照してください。 | |
| |
JDBC仕様は、[[http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jdbc/|sunのJDBCドキュメント]] | |
| |
| |
| |
===== ドライバクラス & 接続URL ===== | |
JDBC URLのポート番号は、データベースのデフォルトのポート番号です。デフォルトを使用している場合、多くのドライバではURLのポート番号を省略できます。 | |
| |
ここに掲載している情報は基本的にRDBMSデベロッパ・プロジェクト公式のドライバソフトウェアの設定です。データベースによってはサードパーティやオープンソースで開発されているドライバが存在します。 | |
| |
<html> | |
<table id="jdbc"> | |
<tr><td rowspan="3">JDBC-ODBC Bridge<br />(Type1)</td><td><code>sun.jdbc.odbc.JdbcOdbcDriver</code></td></tr> | |
<tr><td><code>jdbc:odbc:<em>DataSourceName</em></code></td></tr> | |
<tr><td>Type1はODBCを使用してデータベースにアクセス。ODBCドライバのインストールとODBCアドミニストレータ設定が必要。DataSourceNameにはODBCで設定した名前を入れる。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://db2.jp/">DB2</a><br />Type2</td><td><code>COM.ibm.db2.jdbc.app.DB2Driver (v8.1まで)<br />com.ibm.db2.jcc.DB2Driver (DB2 v8.1.2以降)</code></td></tr> | |
<tr><td><code>jdbc:db2:<em>DataSourceName</em></code></td></tr> | |
<tr><td>DB2クライアントのインストールが必要。DataSourceNameには、DB2構成アシスタントで設定したデータソース名を記述する。新しいドライバはType4と同じクラスで、URLでどちらのTypeを使うか区別する。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://db2.jp/">DB2</a><br />Type3</td><td><code>COM.ibm.db2.jdbc.net.DB2Driver</code></td></tr> | |
<tr><td><code>jdbc:db2://127.0.0.1:50000/<em>DataBaseName</em></code></td></tr> | |
<tr><td>JDBC Type3ドライバのサポートは終了しており、Type4の使用が推奨されている。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://db2.jp/">DB2</a><br />Type4</td><td><code>com.ibm.db2.jcc.DB2Driver</code></td></tr> | |
<tr><td><code>jdbc:db2://127.0.0.1:50000/<em>DataBaseName</em></code></td></tr> | |
<tr><td>DB2バージョン8.1からサポートされた。DB2クライアントのインストールは不要。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://www.oracle.co.jp/database/index.html">Oracle</a><br />Type4</td><td><code>oracle.jdbc.driver.OracleDriver<br/ >oracle.jdbc.OracleDriver (9i以降)</code></td></tr> | |
<tr><td><code>jdbc:oracle:thin:@127.0.0.1:1521:<em>SID</em><br /></code></td></tr> | |
<tr><td>Oracleは他のDBと違い、URLのプロトコルとホストの区切りが // ではなく @ となっている。9i以降でも8iまでのドライバクラスが使えるが、そちらは今後のメンテナンスされないのであたらしいドライバクラスが推奨されている。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://www.oracle.co.jp/database/index.html">Oracle</a><br />Type2</td><td><code>oracle.jdbc.driver.OracleDriver</code></td></tr> | |
<tr><td><code>jdbc:oracle:oci8:@<em>TNS</em> (for Oracle 8i)<br />jdbc:oracle:oci:@<em>TNS</em> (for Oracle 9i or 10g)</code></td></tr> | |
<tr><td>tnsnames.oraファイルにデータソースの設定を書く。Oracleクライアントが必要。</td></tr> | |
<!-- | |
<tr><td rowspan="3"><a href="http://www.teradata-j.com/">Teradata</a><br />Type4</td><td><code>com.ncr.teradata.TeraDriver</code></td></tr> | |
<tr><td><code>jdbc:teradata://127.0.0.1:6063/<em>DBName</em></code></td></tr> | |
<tr><td>ハイエンドデータウェアハウス分野に強いデータベース。ウェアハウスソリューションとして販売されているようなので、大企業の情報システム部門以外でお目にかかる事は無いだろう。</td></tr> | |
--> | |
<tr><td rowspan="3"><a href="http://www.microsoft.com/japan/sql/default.mspx">SQL Server 2000</a><br />Type4</td><td><code>com.microsoft.jdbc.sqlserver.SQLServerDriver</code></td></tr> | |
<tr><td><code>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=<em>DBName</em></code></td></tr> | |
<tr><td>MS製なのでWindows版しかないが、導入が容易でバランスのとれたチューニングが施されている。このドライバはMSDE 2000でも使用可能。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://msdn2.microsoft.com/ja-jp/library/ms771811.aspx">SQL Server 2005</a><br />Type4</td><td><code>com.microsoft.sqlserver.jdbc.SQLServerDriver</code></td></tr> | |
<tr><td><code>jdbc:sqlserver://localhost:1433;DatabaseName=<em>DBName</em></code></td></tr> | |
<tr><td>SQLServer 2005。旧バージョンからドライバクラスもURLも微妙に変更されているので注意。<a href="http://support.microsoft.com/kb/915834/ja" class="ex-ref">参考</a></td></tr> | |
| |
<tr><td rowspan="3"><a href="http://firebird.sourceforge.net/">Firebird</a><br />Type 4</td><td><code>org.firebirdsql.jdbc.FBDriver</code></td></tr> | |
<tr><td><code>jdbc:firebirdsql://127.0.0.1:3050/<em>DataBasePath</em></code></td></tr> | |
<tr><td>オープンソースのRDB。DataBasePathにはサーバ上のデータベースファイル(.gdb)への絶対パスを指定するらしい。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://www.mysql.com/">MySQL</a><br />Type 4</td><td><code>com.mysql.jdbc.Driver</code></td></tr> | |
<tr><td><code>jdbc:mysql://127.0.0.1:3306/<em>DBName</em></code></td></tr> | |
<tr><td>GPLライセンスと商用ライセンスで利用できるRDB。Movable Type等のBlogツールでも採用されている。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://www.postgresql.com/">PostgreSQL</a><br />Type 4</td><td><code>org.postgresql.Driver</code></td></tr> | |
<tr><td><code>jdbc:postgresql://127.0.0.1:5432/<em>DBName</em></code></td></tr> | |
<tr><td>BSDライセンスで配布されており、商用でも無償で使用可能。中小規模システム、個人用DBとしてMySQLと並んで人気。</td></tr> | |
| |
<tr><td rowspan="9"><a href="http://hsqldb.sourceforge.net/">HSQLDB</a></td><td><code>org.hsqldb.jdbcDriver</code></td></tr> | |
<tr><td><code>jdbc:hsqldb:hsql://127.0.0.1:9001/<em>databasename</em></code></td></tr> | |
<tr><td>高速、軽量、Pure Javaの組み込み向けRDBMS。jarファイル一つで動作する。このURLはサーバモードで起動したHSQLDBにアクセスするURL。</td></tr> | |
| |
<tr><td><code>org.hsqldb.jdbcDriver</code></td></tr> | |
<tr><td><code>jdbc:hsqldb:file:<em>databasename</em></code></td></tr> | |
<tr><td>HSQLDBをインプロセスモードで起動する。javaアプリケーションと同じVM上で起動し、組み込みのデータベースとして使う。終了時にSHUTDOWN命令を送らないとデータが永続化されない。URLの最後に<code>;shutdown=true</code>を付加すると終了時にデータが自動的に保存される。</td></tr> | |
| |
<tr><td><code>org.hsqldb.jdbcDriver</code></td></tr> | |
<tr><td><code>jdbc:hsqldb:mem:<em>databasename</em></code></td></tr> | |
<tr><td>HSQLDBをインメモリモードで起動する。インメモリモードはスタンドアロンモードと同じだがデータを永続化しない。JavaVMを終了するとデータが失われる。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://db.apache.org/derby/">Derby</a></td><td><code>org.apache.derby.jdbc.EmbeddedDriver</code></td></tr> | |
<tr><td><code>jdbc:derby:<em>databasename</em>;create=true</code></td></tr> | |
<tr><td>Java言語で書かれた組み込み用のデータベース。create=trueはオプションで、databasenameが見つからない場合に新規データベースを作成する。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://store.openbase.com/">OpenBase</a><br />Type4</td><td><code>com.openbase.jdbc.ObDriver</code></td></tr> | |
<tr><td><code>jdbc:openbase://localhost/<em>DataBaseName</em></code></td></tr> | |
<tr><td>MacOSXの前身NEXTSTEP/OPENSTEP上で開発されたRDBMSらしい。Linux版、Windows版もあるようだ。</td></tr> | |
| |
<tr> | |
<td rowspan="6"><a href="http://www.h2database.com/html/frame.html">H2</a></td> | |
<td><code>org.h2.Driver</code></td> | |
</tr> | |
<tr><td><code>jdbc:h2:tcp://localhost:9092/<em>DataBasePath</em></code></td></tr> | |
<tr><td>HSQLの開発者が作成した組み込みDB。DBをサーバとして起動した場合のURL。</td></tr> | |
<tr><td><code>org.h2.Driver</code></td></tr> | |
<tr><td><code>jdbc:h2:<em>DataBasePath</em></code></td></tr> | |
<tr><td>組み込みDBとして使用する場合のURL。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://www.sybase.com/products/allproductsa-z/softwaredeveloperkit/jconnect">Sybase ASE</a><br />Type4</td><td><code>com.sybase.jdbc.SybDriver</code></td></tr> | |
<tr><td><code>jdbc:sybase:Tds:localhost:8001/<em>databasename</em></code></td></tr> | |
<tr><td>一時期MSSQLServerとして提供されていたこともあるRDBMS。そのためか両製品をサポートしている<a href="http://sourceforge.net/projects/jtds/">サードパーティ製やオープンソース</a>のドライバがある。</td></tr> | |
| |
<tr><td rowspan="3"><a href="http://www.zentus.com/sqlitejdbc/">SQLite</a><br />Type4(?)</td><td><code>org.sqlite.JDBC</code></td></tr> | |
<tr><td><code>jdbc:sqlite:<em>databasefile_path</em></code></td></tr> | |
<tr><td>SQLiteにアクセスするJDBCドライバ。NestedVMというものをつかってPure Javaのドライバとしている?らしい…</td></tr> | |
| |
</table> | |
</html> | |
| |
===== 素のJDBCで接続 ===== | |
素のConnectionを使って接続 | |
<code java> | |
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(); | |
} | |
} | |
} | |
</code> | |