40
デデデデデデデ Java デデデデデデJDBC Presented by SFC-TYPE

データベースと Java をつなげよう! ~ JDBC~

  • Upload
    adeola

  • View
    88

  • Download
    0

Embed Size (px)

DESCRIPTION

データベースと Java をつなげよう! ~ JDBC~. Presented by SFC-TYPE. 今回の目標. データベースを Java プログラムから使えるようになる JDBC とは何か、説明できる JDBC の使い方を知る. 1. 前回の復習. MySQL とお話をする. 前回の復習のポイント. データベースシステムとは何か SQL を使うと何が嬉しいか. ーデータベースと DBMS のこと. ー DBMS の種類に依存せずに  データベースの操作ができる. 奥様 WEB をデータベースにしよう!. 奥様 Web の投稿画面は、 - PowerPoint PPT Presentation

Citation preview

Page 1: データベースと Java をつなげよう! ~ JDBC~

データベースと Javaをつなげよう!

~ JDBC~

Presented by

SFC-TYPE

Page 2: データベースと Java をつなげよう! ~ JDBC~

今回の目標

データベースを Javaプログラムから使えるようになる – JDBCとは何か、説明できる– JDBCの使い方を知る

Page 3: データベースと Java をつなげよう! ~ JDBC~

1.前回の復習

MySQLとお話をする

Page 4: データベースと Java をつなげよう! ~ JDBC~

前回の復習のポイント

データベースシステムとは何か

SQLを使うと何が嬉しいかーデータベースと DBMSのこと

ー DBMSの種類に依存せずに データベースの操作ができる

Page 5: データベースと Java をつなげよう! ~ JDBC~

奥様WEBをデータベースにしよう!

奥様Webの投稿画面は、

オリジナルレシピ・投稿画面お名前:料理名:作り方:

Page 6: データベースと Java をつなげよう! ~ JDBC~

テーブルにするとこんな感じ

データベース名: okusama

テーブル名: toukoudata

contributor title content

ishihara tamago shio

takeda cake sugar

kawamura medama yowabi

Page 7: データベースと Java をつなげよう! ~ JDBC~

やってみよう!(5分間)

MySQLを使って先ほどのデータベースを作りましょう( ishiharaだけ作って下さい)データベース名: okusama テーブル名: toukoudata

contributor title content

ishihara tamago shio

Page 8: データベースと Java をつなげよう! ~ JDBC~

MySQLの起動

MySQLを起動させる(前回の復習)DOSプロンプトから>mysqld-max --standalone( win95&98)>mysqld-max-nt --standalone(win 2000&xp)クライアントを使ってお話しする>mysql (リターン)

Page 9: データベースと Java をつなげよう! ~ JDBC~

データベースの作成

データベースの作成mysql>create database okusama;確認するなら...mysql>show databases;データベースの選択mysql>use okusama

Page 10: データベースと Java をつなげよう! ~ JDBC~

テーブルの作成

テーブル内の型の定義mysql>create table toukoudata(

>contributor text,

>title text,

>content text

>);

contributor title content

Ishihara tagamgo shio

takeda cake sugar

kawamura medama yowabi

Page 11: データベースと Java をつなげよう! ~ JDBC~

テーブル内のデータの作成

データの追加mysql>insert into

toukoudata(contributor,title,content)

>values (’ishihara’,’tamago’,’shio’);

Page 12: データベースと Java をつなげよう! ~ JDBC~

テーブル内のデータの表示

テーブル内のデータの表示mysql> select * from toukoudata; +-------------+--------+---------+ | contributor | recipe | content | +-------------+--------+---------+ | ishihara | tamago | shio | +-------------+--------+---------+ 1 row in set (0.01 sec)mysql>

Page 13: データベースと Java をつなげよう! ~ JDBC~

2.JDBC

2-1.JDBCとは?2-2.JDBC解説

Page 14: データベースと Java をつなげよう! ~ 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/

Page 15: データベースと Java をつなげよう! ~ JDBC~

実行してみよう!

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/

Page 16: データベースと Java をつなげよう! ~ JDBC~

実行例

投稿データを一覧表示する IchiranSQL.javaプログラムの実行

%javac IchiranSQL.java (リターン)%java IchiranSQL (リターン)Connectiog to Database....ishihara[tamago/shio] %

Page 17: データベースと Java をつなげよう! ~ JDBC~

Javaプログラムとデータベースがつながった!

Javaプログラムとデータベースをつなぐためには JDBCドライバが必要です

JDBCは、 Javaから DBを操作するための部品群です( Connectionクラス ,Statementクラス、 ResultSetクラス等)

それでは、図で理解してみましょう

Page 18: データベースと Java をつなげよう! ~ JDBC~

Javaプログラム、 JDBC、 JDBCドライバ、 DBMSの関係図

JavaプログラムJDBC

MySQL

Oracle

Access

JDBCドライバ

Page 19: データベースと Java をつなげよう! ~ JDBC~

2-2.JDBCの解説

それでは IchiranSQL.javaのソースコードを見ながら、 Javaプログラムとデータベースがどのようにしてお話ししているか理解しましょう。

Page 20: データベースと Java をつなげよう! ~ JDBC~

JDBCドライバを読み込む

//JDBCドライバを選択するString jdbcDriver = "org.gjt.mm.mysql.Driver"; Class.forName(jdbcDriver);

Class.forNameメソッドで JDBCドライバを読み込みます。今回はMySQLの JDBCドライバを使います。

Page 21: データベースと Java をつなげよう! ~ JDBC~

JDBC URL

DBMSとの接続には DBMS URLを指定する必要があります。 URLの指定方法はデータベースの種類によって異なります。

MySQLの書式jdbc:mysql://[サーバ名 ]/[データベース名 ]例) jdbc:mysql://localhost/okusama/

Page 22: データベースと Java をつなげよう! ~ JDBC~

データベースの接続

データベースの接続には Connectionクラスを使います。 DriverManager.getConnection()を使ってデータベースに接続する。以後は、 Connectionオブジェクトを通してデータベースにアクセスします。

Connection conn = DriverManager.getConnection(url,user,password)

Page 23: データベースと Java をつなげよう! ~ JDBC~

データベースの接続の終了

使い終わったら close()メソッドを実行します。接続を閉じることで、データベースのメモリ等のリソースが解放され、速度が速くなります。

conn.close();

Page 24: データベースと Java をつなげよう! ~ JDBC~

SQL文を投げるステートメントを作る

SQL文を投げて結果を受け取るには、 Statementクラスを使います。 ConnectionクラスのcreateStatement()から Statementオブジェクトを取得します。

//SQL文を実行するステートメントの作成Statement statement = conn.createStatement();

Page 25: データベースと Java をつなげよう! ~ JDBC~

SQL文を投げるステートメントを閉じる

SQL文によるデータベールとのお話が終わったら、ステートメントを閉じましょう。

statement.close

Page 26: データベースと Java をつなげよう! ~ JDBC~

SQL文を投げて結果を受け取る (1/3)

Statementクラスの executeQetry()は、投げた SQL文の結果を ResultSetオブジェクトを返します。

//SQL文の実行ResultSet toukoudata =

statement.executeQuery(sqlString);

Page 27: データベースと Java をつなげよう! ~ JDBC~

ResultSetとは

表です。

yowabimedamakawamura

sugarcaketakeda

shiotamagoishihara

contenttitlecontributor

こんなの

Page 28: データベースと Java をつなげよう! ~ JDBC~

ResultSet

ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。

例) next()メソッド

contributor title content

ishihara tamago shio

takeda cake sugar

kawamura medama yowabi

ここを見る

この列の表があるかを True/Falseで返し、Trueならこの列の情報を保持する。

next()で次は、ここを見る

Page 29: データベースと Java をつなげよう! ~ JDBC~

ResultSet

ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。

例) getString()メソッド

contributor title content

ishihara tamago shio

takeda cake sugar

kawamura medama yowabi

例えば、ResultSetが現在ここを指していたら、getString(“content”)で shioが得られる

Page 30: データベースと Java をつなげよう! ~ JDBC~

SQL文を投げて結果を受け取る (2/3)

IchiranSQL.javaでは Select文を実行してみましたが、今度は Insert文を使ってデータの追加をします。

ToukouSQL.javaではデータの追加をするために、 Statementクラスの executeUpdate()を使います。

Page 31: データベースと Java をつなげよう! ~ JDBC~

実行してみよう!

>javac ToukouSQL.java

>java ToukouSQL

Connecting to Database….

result of executeUpdate(): 1

Page 32: データベースと Java をつなげよう! ~ JDBC~

ToukouSQL.javaがしたこと

ToukouSQLプログラムの実行により、データの追加をしました

さっそく追加されていたか、 IchiranSQL.javaプログラムを実行して確認しましょう

Page 33: データベースと Java をつなげよう! ~ JDBC~

SQL文を投げて結果を受け取る (3/3)

executeUpdate()は、投げかけられた insert文 ,delete文の結果を整数で返します。

//SQL文の実行result = statement.executeUpdate(sqlString);

Page 34: データベースと Java をつなげよう! ~ JDBC~

整理

JDBCは主要なつのクラスを持っていました– Connectionーデータベースと接続するクラス– Statementー SQL文を投げかけて結果を受け取るクラス

executeQuery()メソッド executeUpdate()メソッド

– ResultSetー結果を受け取るクラス

Page 35: データベースと Java をつなげよう! ~ JDBC~

確認

JDBCとは何ですか?

JDBCドライバとは何ですか?ー主要な3つのクラスの働きは?

Page 36: データベースと Java をつなげよう! ~ JDBC~

ディスカッション (1/2)

Statementクラスには、 executeQuery()メソッドと executeUpdate()メソッドがありました。この二つのメソッドの違いはなんですか?

Page 37: データベースと Java をつなげよう! ~ JDBC~

ディスカッション( 2/2)

Connectionクラスと Statementクラスの違いは?

Page 38: データベースと Java をつなげよう! ~ JDBC~

コーヒーブレイク♪(Classpathの話)

MySQLの JDBCドライバを〜 jre/lib/ext/以下に置きました。ここに置かれるクラスは、 javacや javaを実行するときに参照されます。

Servletが実行されるときに参照したいクラスがある場合(例えば、 JDBCドライバをServletで使う場合)、WEB-INF/lib/以下のディレクトリに置きましょう。

Page 39: データベースと Java をつなげよう! ~ JDBC~

おわりに

今回は Javaプログラムから DBを操作する方法について学びました。来週は、 DBのもっと高度な操作、機能について学びます。

Page 40: データベースと Java をつなげよう! ~ JDBC~

課題

コンソールに対して SQL文を打つことによって DBに要求を発行できるようにする