Download - データベースと Java をつなげよう! ~ JDBC~
データベースと Javaをつなげよう!
~ JDBC~
Presented by
SFC-TYPE
今回の目標
データベースを Javaプログラムから使えるようになる – JDBCとは何か、説明できる– JDBCの使い方を知る
1.前回の復習
MySQLとお話をする
前回の復習のポイント
データベースシステムとは何か
SQLを使うと何が嬉しいかーデータベースと DBMSのこと
ー 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,
>content text
>);
contributor title content
Ishihara tagamgo 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/2002spring2/
実行してみよう!
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の関係図
JavaプログラムJDBC
MySQL
Oracle
Access
JDBCドライバ
2-2.JDBCの解説
それでは IchiranSQL.javaのソースコードを見ながら、 Javaプログラムとデータベースがどのようにしてお話ししているか理解しましょう。
JDBCドライバを読み込む
//JDBCドライバを選択するString jdbcDriver = "org.gjt.mm.mysql.Driver"; Class.forName(jdbcDriver);
Class.forNameメソッドで JDBCドライバを読み込みます。今回はMySQLの JDBCドライバを使います。
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とは
表です。
yowabimedamakawamura
sugarcaketakeda
shiotamagoishihara
contenttitlecontributor
こんなの
ResultSet
ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。
例) next()メソッド
contributor title content
ishihara tamago shio
takeda cake sugar
kawamura medama yowabi
ここを見る
この列の表があるかを True/Falseで返し、Trueならこの列の情報を保持する。
next()で次は、ここを見る
ResultSet
ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。
例) getString()メソッド
contributor title content
ishihara tamago shio
takeda cake sugar
kawamura medama yowabi
例えば、ResultSetが現在ここを指していたら、getString(“content”)で shioが得られる
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とは何ですか?
JDBCドライバとは何ですか?ー主要な3つのクラスの働きは?
ディスカッション (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に要求を発行できるようにする