400 likes | 587 Views
データベースと Java をつなげよう! ~ JDBC~. Presented by SFC-TYPE. 今回の目標. データベースを Java プログラムから使えるようになる JDBC とは何か、説明できる JDBC の使い方を知る. 1. 前回の復習. MySQL とお話をする. 前回の復習のポイント. データベースシステムとは何か SQL を使うと何が嬉しいか. ーデータベースと DBMS のこと. ー DBMS の種類に依存せずに データベースの操作ができる. 奥様 WEB をデータベースにしよう!. 奥様 Web の投稿画面は、
E N D
データベースとJavaをつなげよう!~JDBC~ Presented by SFC-TYPE
今回の目標 • データベースをJavaプログラムから使えるようになる • JDBCとは何か、説明できる • JDBCの使い方を知る
1.前回の復習 MySQLとお話をする
前回の復習のポイント • データベースシステムとは何か • SQLを使うと何が嬉しいか ーデータベースとDBMSのこと ーDBMSの種類に依存せずに データベースの操作ができる
奥様WEBをデータベースにしよう! 奥様Webの投稿画面は、 オリジナルレシピ・投稿画面 お名前: 料理名: 作り方:
テーブルにするとこんな感じ データベース名:okusama テーブル名:toukoudata
やってみよう!(5分間) • MySQLを使って先ほどのデータベースを作りましょう(ishiharaだけ作って下さい) データベース名:okusama テーブル名:toukoudata
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 >);
テーブル内のデータの作成 • データの追加 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プログラムとデータベースがつながった! • JavaプログラムとデータベースをつなぐためにはJDBCドライバが必要です • JDBCは、JavaからDBを操作するための部品群です(Connectionクラス,Statementクラス、ResultSetクラス等) • それでは、図で理解してみましょう
Javaプログラム、JDBC、JDBCドライバ、DBMSの関係図Javaプログラム、JDBC、JDBCドライバ、DBMSの関係図 Java プログラム MySQL JDBCドライバ Oracle JDBC Access
それではIchiranSQL.javaのソースコードを見ながら、Javaプログラムとデータベースがどのようにしてお話ししているか理解しましょう。それではIchiranSQL.javaのソースコードを見ながら、Javaプログラムとデータベースがどのようにしてお話ししているか理解しましょう。 2-2.JDBCの解説
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オブジェクトを通してデータベースにアクセスします。 Connectionconn = 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);
こんなの contributor title content ishihara tamago shio takeda cake sugar kawamura medama yowabi ResultSetとは • 表です。
ここを見る next()で次は、 ここを見る ResultSet • ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。 • 例)next()メソッド この列の表があるかをTrue/Falseで返し、 Trueならこの列の情報を保持する。
例えば、 ResultSetが 現在ここを 指していたら、 getString(“content”) でshioが得られる ResultSet • ResultSetクラスは表を保持して、必要に応じて、欲しい情報を出してくれます。 • 例)getString()メソッド
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に要求を発行できるようにする