![]()
![]()
![]()
JDBCの基本的な使い方のメモ
最終更新日 : 07/05/06
JDBCを利用し、javaからデータベースにアクセスする方法についてのメモです。テストではPostgreSQLをDBに使いました。
☆もくじ
使用するデータベースに付属しているJDBCを使います。コンパイルオプションにこのJDBCを含めてやる必要があります。
Eclipse上では、マウスだけで、設定可能です。下のほうにやり方を書いてみました。
以下がとりあえず組んでみたサンプル
ソース中にも書いてありますが、接続先のDBにtext_tblというテーブルが存在している必要があります。あらかじめ、データベースやテーブルを作成しておいてください。
import java.sql.*;
class JdbcTest
{
public static void main(String[] args)
{
System.out.println("ドライバをロードします。");
//ドライバをロードする処理。
try
{
//ここでクラスを指定してやると、内部でDriverManagerにドライバを登録してくれるらしいです。
/*
データベース毎に、ドライバが提供されているはずなので、使うデータベースにあわせて
何を使うかを指定してやる必要がある。
PostgreSQLの場合、これでOK(PostgreSQLのドライバへのパスを指定してやる必要があります!
*/
Class.forName("org.postgresql.Driver");
}
catch(ClassNotFoundException e)
{
System.out.println("ドライバのロードに失敗しました。終了します。");
return;
}
System.out.println("データベースへと接続を試みます");
//データベースに接続を行う処理。
Connection connect;
Statement st;
ResultSet res;
try
{
//接続を行う。
connect = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/postgres",
"postgres",
"usagi"
);
/*
Note:getConnectionの引数について
第1引数
URLというものらしいです。フォーマットは以下のとおりです。
jdbc:サブプロトコル://ホスト名前:ポート番号/データベース名前
第2引数
ログインするユーザー名前
第3引数
パスワード
*/
//問い合わせステートメント
st = connect.createStatement();
//SQLで問い合わせの実行
res = st.executeQuery("SELECT * FROM text_tbl");
/*
あらかじめtext_tblというテーブルがpostgresというデータベースにあることが前提。
CREATE TABLE text_tbl
(
id Integer PRIMARY KEY,
name TEXT NOT NULL
)
として作成されているものとします。
*/
//取得したResultSetの情報について取得する。
ResultSetMetaData meta = res.getMetaData();
int column_count = meta.getColumnCount(); //ResultSetのカラムの数を取得する。
int c = 1;
//カラムを表示する。
System.out.print(" ");
while( column_count-- > 0 )
{
/*
getColumnNameは数値指定の範囲が1〜なので注意。ゼロを指定すると
例外を投げます。
*/
System.out.print(meta.getColumnName(c++)+" ");
}
System.out.println("");
//問い合わせ結果を出力する。
while( res.next() )
{
System.out.print(res.getRow()+" : "); //行番号を出力
System.out.println(res.getString("id") + "\t" + res.getString("name"));
}
/*
nextメソッドについて
カーソルを次に移動させる機能です。
ResultSetのカーソルは、初期状態では、最初の行の手前を指しているため、最初にnext
を呼び出し、それからデータを取得すると、最初の行のデータが取得できます。
データが無くなるとfalseを返します。
*/
//リソース開放
res.close();
st.close();
connect.close();
}
catch(SQLException e)
{
System.out.println("問い合わせ中、エラーが発生しました。終了します。");
return;
}
System.out.println("\n正常に終了しました。");
}
}
|
ちなみに実行結果は以下のとおりです。
text_tblに対し
INSERT INTO text_tbl VALUES(10,'nyannyan')
と
INSERT INTO text_tbl VALUES(10,'wanwan')
を実行した状態のtexT_tblに対する問い合わせ結果です。
ドライバをロードします。
データベースへと接続を試みます
id name
1 : 10 nyannyan
2 : 11 wanwan
正常に終了しました。
|
Eclipse上で、使用するjarファイルをクラスパスに含めてやればOKです。
以下の例は、PostgreSQLに接続する際、必要なjarファイルをクラスパスに追加しているところです。
