データベース第2回 ~JDBC~

データベースとJavaをつなげよう!
~JDBC~
Presented by
SFC-TYPE
今回の目標

データベースをJavaプログラムから使えるようにな
る
–
–
JDBCとは何か、説明できる
JDBCの使い方を知る
1.前回の復習
MySQLとお話をする
前回の復習のポイント

データベースシステムとは何か
ーデータベースとDBMSのこと

SQLを使うと何が嬉しいか
ーDBMSの種類に依存せずに
データベースの操作ができる
奥様WEBをデータベースにしよう!
奥様Webの投稿画面は、
オリジナルレシピ・投稿画面
お名前:
料理名:
作り方:
テーブルにするとこんな感じ
データベース名:okusama
テーブル名:toukoudata
contributor
title
content
ishihara
tamago
shio
takeda
cake
sugar
kawamura
medama
yowabi
やってみよう!(5分間)
MySQLを使って先ほどのデータベースを作りま
しょう(ishiharaだけ作って下さい)
データベース名:okusama
テーブル名:toukoudata

contributor
title
content
ishihara
tamago
shio
MySQLの起動
MySQLを起動させる(前回の復習)
DOSプロンプトから
>mysqld-max --standalone(win95&98)
>mysqld-max-nt --standalone(win 2000&xp)
 クライアントを使ってお話しする
>mysql (リターン)

データベースの作成
データベースの作成
mysql>create database okusama;
 確認するなら...
mysql>show databases;
 データベースの選択
mysql>use okusama

テーブルの作成
テーブル内の型の定義
mysql>create table toukoudata(
>contributor text,
>title text,
contributor title
>content text
Ishihara
tagamgo
>);

content
shio
takeda
cake
sugar
kawamura
medama
yowabi
テーブル内のデータの作成
データの追加
mysql>insert into
toukoudata(contributor,title,content)
>values (’ishihara’,’tamago’,’shio’);

テーブル内のデータの表示
テーブル内のデータの表示
mysql> select * from toukoudata;
+-------------+--------+---------+
| contributor | recipe | content |
+-------------+--------+---------+
| ishihara
| tamago | shio
|
+-------------+--------+---------+
1 row in set (0.01 sec)
mysql>

2.JDBC
2-1.JDBCとは?
2-2.JDBC解説
2-1.JDBCとは?

JDBCを理解するために必要なもの
–
–
–
mm.mysql-2.0.14(JDBC API)
IchiranSQL.java(投稿データを一覧表示する)
ToukouSQL.java(新しいレシピを投稿する)
次のURLからダウンロードしてください。
http://www.crew.sfc.keio.ac.jp/seminar/2002sprin
g2/
実行してみよう!


mm.mysql-2.0.14-bin.lzhを解凍する
その中にあるmm.mysql-2.0.14-bin.jarファイルを,
JDKをインストールしたディレクトリ/jre/lib/ext/
以下に置く。
例)c:/jdk1.3.1/jre/lib/ext/
実行例
投稿データを一覧表示するIchiranSQL.javaプロ
グラムの実行
%javac IchiranSQL.java (リターン)
%java IchiranSQL (リターン)
Connectiog to Database....
ishihara[tamago/shio]
%

Javaプログラムとデータベースがつな
がった!



Javaプログラムとデータベースをつなぐためには
JDBCドライバが必要です
JDBCは、JavaからDBを操作するための部品群で
す(Connectionクラス,Statementクラス、ResultSet
クラス等)
それでは、図で理解してみましょう
Javaプログラム、JDBC、JDBCドライバ、
DBMSの関係図
MySQL
Oracle
Access
JDBCドライバ
JDBC
Java
プログラム
2-2.JDBCの解説
 それではIchiranSQL.javaのソース
コードを見ながら、Javaプログラムと
データベースがどのようにしてお話し
しているか理解しましょう。
JDBCドライバを読み込む

Class.forNameメソッドでJDBCドライバを読み
込みます。今回はMySQLのJDBCドライバを使
います。
//JDBCドライバを選択する
String jdbcDriver = "org.gjt.mm.mysql.Driver";
Class.forName(jdbcDriver);
JDBC URL

DBMSとの接続にはDBMS URLを指定する必要
があります。URLの指定方法はデータベースの種
類によって異なります。
MySQLの書式
jdbc:mysql://[サーバ名]/[データベース名]
例)jdbc:mysql://localhost/okusama/
データベースの接続

データベースの接続にはConnectionクラスを使い
ます。 DriverManager.getConnection()を使って
データベースに接続する。以後は、Connectionオ
ブジェクトを通してデータベースにアクセスします。
Connection conn =
DriverManager.getConnection(url,user,password)
データベースの接続の終了

使い終わったらclose()メソッドを実行します。接続
を閉じることで、データベースのメモリ等のリソース
が解放され、速度が速くなります。
conn.close();
SQL文を投げるステートメントを作る

SQL文を投げて結果を受け取るには、
Statementクラスを使います。Connectionク
ラスのcreateStatement()からStatementオブ
ジェクトを取得します。
//SQL文を実行するステートメントの作成
Statement statement = conn.createStatement();
SQL文を投げるステートメントを閉じる

SQL文によるデータベールとのお話が終わったら、
ステートメントを閉じましょう。
statement.close
SQL文を投げて結果を受け取る(1/3)

StatementクラスのexecuteQetry()は、投げた
SQL文の結果をResultSetオブジェクトを返します。
//SQL文の実行
ResultSet toukoudata =
statement.executeQuery(sqlString);
ResultSetとは

表です。
こんなの
contributor
title
content
ishihara
tamago
shio
takeda
cake
sugar
kawamura
medama
yowabi
ResultSet
ResultSetクラスは表を保持して、必要に応じて、
欲しい情報を出してくれます。
この列の表があるかをTrue/Falseで返し、
 例)next()メソッド

Trueならこの列の情報を保持する。
ここを見る
next()で次は、
ここを見る
contributor
title
content
ishihara
tamago
shio
takeda
cake
sugar
kawamura
medama
yowabi
ResultSet


ResultSetクラスは表を保持して、必要に応じて、
欲しい情報を出してくれます。
例)getString()メソッド
例えば、
ResultSetが
現在ここを
指していたら、
getString(“content”)
でshioが得られる
contributor
title
content
ishihara
tamago
shio
takeda
cake
sugar
kawamura
medama
yowabi
SQL文を投げて結果を受け取る(2/3)


IchiranSQL.javaではSelect文を実行してみました
が、今度はInsert文を使ってデータの追加をします。
ToukouSQL.javaではデータの追加をするために、
StatementクラスのexecuteUpdate()を使います。
実行してみよう!
>javac ToukouSQL.java
>java ToukouSQL
Connecting to Database….
result of executeUpdate(): 1
ToukouSQL.javaがしたこと


ToukouSQLプログラムの実行により、データの追
加をしました
さっそく追加されていたか、IchiranSQL.javaプロ
グラムを実行して確認しましょう
SQL文を投げて結果を受け取る(3/3)

executeUpdate()は、投げかけられたinsert
文,delete文の結果を整数で返します。
//SQL文の実行
result = statement.executeUpdate(sqlString);
整理

JDBCは主要なつのクラスを持っていました
–
–
Connectionーデータベースと接続するクラス
StatementーSQL文を投げかけて結果を受け取るクラ
ス


–
executeQuery()メソッド
executeUpdate()メソッド
ResultSetー結果を受け取るクラス
確認

JDBCとは何ですか?
ー主要な3つのクラスの働きは?

JDBCドライバとは何ですか?
ディスカッション(1/2)

Statementクラスには、executeQuery()メソッドと
executeUpdate()メソッドがありました。この二つ
のメソッドの違いはなんですか?
ディスカッション(2/2)

ConnectionクラスとStatementクラスの違いは?
コーヒーブレイク♪
(Classpathの話)


MySQLのJDBCドライバを〜jre/lib/ext/以下に置
きました。ここに置かれるクラスは、javacやjavaを
実行するときに参照されます。
Servletが実行されるときに参照したいクラスがあ
る場合(例えば、JDBCドライバをServletで使う場
合)、WEB-INF/lib/以下のディレクトリに置きましょ
う。
おわりに

今回はJavaプログラムからDBを操作する方法に
ついて学びました。来週は、DBのもっと高度な操
作、機能について学びます。
課題

コンソールに対してSQL文を打つことによってDBに
要求を発行できるようにする