データベースとJavaをつなげよう! ~JDBC~ Presented by SFC-TYPE 今回の目標 データベースをJavaプログラムから使えるようにな る – – JDBCとは何か、説明できる JDBCの使い方を知る 1.前回の復習 MySQLとお話をする 前回の復習のポイント データベースシステムとは何か ーデータベースとDBMSのこと SQLを使うと何が嬉しいか ー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, contributor title >content text Ishihara tagamgo >); content 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/2002sprin g2/ 実行してみよう! 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 Oracle Access JDBCドライバ JDBC Java プログラム 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文を投げるステートメントを閉じる SQL文によるデータベールとのお話が終わったら、 ステートメントを閉じましょう。 statement.close SQL文を投げて結果を受け取る(1/3) StatementクラスのexecuteQetry()は、投げた SQL文の結果をResultSetオブジェクトを返します。 //SQL文の実行 ResultSet toukoudata = statement.executeQuery(sqlString); ResultSetとは 表です。 こんなの contributor title content ishihara tamago shio takeda cake sugar kawamura medama yowabi ResultSet ResultSetクラスは表を保持して、必要に応じて、 欲しい情報を出してくれます。 この列の表があるかをTrue/Falseで返し、 例)next()メソッド Trueならこの列の情報を保持する。 ここを見る next()で次は、 ここを見る contributor title content ishihara tamago shio takeda cake sugar kawamura medama yowabi 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プロ グラムを実行して確認しましょう SQL文を投げて結果を受け取る(3/3) executeUpdate()は、投げかけられたinsert 文,delete文の結果を整数で返します。 //SQL文の実行 result = statement.executeUpdate(sqlString); 整理 JDBCは主要なつのクラスを持っていました – – Connectionーデータベースと接続するクラス StatementーSQL文を投げかけて結果を受け取るクラ ス – executeQuery()メソッド executeUpdate()メソッド ResultSetー結果を受け取るクラス 確認 JDBCとは何ですか? ー主要な3つのクラスの働きは? JDBCドライバとは何ですか? ディスカッション(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に 要求を発行できるようにする
© Copyright 2024 ExpyDoc