データベースと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を理解するために必要なもの 次のURLからダウンロードしてください。 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の関係図 MySQL JDBCドライバ Java プログラム Oracle JDBC Access
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文を投げるステートメントを閉じる statement.close
SQL文を投げて結果を受け取る(1/3) StatementクラスのexecuteQetry()は、投げたSQL文の結果をResultSetオブジェクトを返します。 //SQL文の実行 ResultSet toukoudata = statement.executeQuery(sqlString);
ResultSetとは 表です。 yowabi medama kawamura sugar cake takeda shio tamago ishihara content title contributor こんなの
ResultSet ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。 例)next()メソッド この列の表があるかをTrue/Falseで返し、 Trueならこの列の情報を保持する。 contributor title content ishihara tamago shio takeda cake sugar kawamura medama yowabi ここを見る next()で次は、 ここを見る
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プログラムを実行して確認しましょう
result = statement.executeUpdate(sqlString); 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に要求を発行できるようにする