データベースと java をつなげよう! ~ jdbc~

Post on 21-Jan-2016

56 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

データベースと 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に要求を発行できるようにする

top related