データベースを使ったプログラミング ~JDBCを使ってみよう~

Slides:



Advertisements
Similar presentations
ASP 入門2 ー授業でアンケート集計ー. ねらい 総合実習等で、相互評価を行った際の集計を ASP + AccessDB で行う。 相互評価の点数部分は見られないように、感 想部分(テキスト)は見えるようにする。 ( 発表直後のフィードバック ) AccessDB に蓄積した得点は、 Excel.
Advertisements

AdventNet SwisSQL データベース自動移行ツール.
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
SQLite3
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
情報理工学部 情報システム工学科 3年 H 井奈波 和也
JPAを利用した RESTful Webサービスの開発
SQLエディタによる データベースプログラミング
SQC勉強会(0) (事前のご案内) -1-.
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
IO - 入出力 小西 亨.
PHPエディタによる 情報システム演習 01.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Servlet J2EE I 第8回 /
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
SQL J2EE I 第3回 /
JavaServlet&JSP入門 01K0018 中村太一.
卒研:データベースチーム 第4回 DOMを使った処理
RDBMSについて 2年7組  小鹿 慎太郎.
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
09 06/23 PHP と SQL (MySQL) の連携 その2
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
Servlet入門(2) 入力フォームをつかったWebアプリ
ServletによるWebアプリ作成 入門
ネットワークプログラミング論 平成28年12月12日 森田 彦.
利用者を識別するWebアプリ を作ろう! 2004年6月10日 武田林太郎.
データベース設計 第9回 Webインタフェースの作成(1)
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
RMI ソフトウェア特論 第6回 /
データベースとJavaをつなげよう! ~JDBC~
2003年度 データベース論 安藤 友晴.
サブゼミ第9回 実装編③ 永続化とjava.ioパッケージ.
ネットワークプログラミング論 平成28年12月26日 森田 彦.
JDBC J2EE I 第4回 /
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
総合政策学部4年 伊藤玲子 総合政策学部4年 阿部雅美 +CreWな皆様
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
マイクロソフト Access での SQL 演習 第5回 副問い合わせ
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
Javaによる Webアプリケーション入門 第6回
JDBC データベース論 第12回.
Javaによる Webアプリケーション入門 第7回
09 06/23 PHP と SQL (MySQL) の連携 その1
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
Javaによる Webアプリケーション入門 第2回
ネットワークプログラミング (5回目) 05A1302 円田 優輝.
ネットワークプログラミング論 平成28年12月19日 森田 彦.
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
JDBC J2EE I (データベース論) 第5回 /
3.リレーショナルデータベース,主キー, SQL
JDBC ソフトウェア特論 第3回.
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
Javaによる Webアプリケーション入門 第8回
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
JSPの基本 J2EE I (データベース論) 第8回 /
データベース第3回目 意味ごとにテーブルを分ける
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
SQL J2EE I (データベース論) 第3回 /
クリエイティブ リサーチ 2019/05/20 日本工学院八王子専門学校 M.Katsube.
SQL データベース論 第11回.
Presentation transcript:

データベースを使ったプログラミング ~JDBCを使ってみよう~ 深澤 洋介(環4)   &CreW project

今日の資料 http://www.sfc.keio.ac.jp/~t00815yf/crew/

今日の目標 Javaのプログラムからデータベースを使えるようになる JDBCとは何か、説明できる JDBCを使えるようになる

1.前回のおさらい データベースとSQL

前回のおさらい データベースとは何か? データベース(DB)、データベースシステム、データベースマネジメントシステム(DBMS)の関係は? 管理 DB データの集まり

前回のおさらい データベースを使う利点は? データの処理をいちいち記述しなくて済む(SQLで指示を出すだけ) データを格納するルールが決まっている 処理速度が速い

前回のおさらい SQLって何? リレーショナルデータベース(RDB)からデータを出し入れする際の共通語 話し手 SQL SQL SQL DBMSの種類に依存することなくDBを操作できる 話し手 SQL SQL SQL SQL MySQL DBMS PostgreSQL Oracle InterBase

実習-MySQLとSQL- 前回の復習を兼ねて、今回のサブゼミ用のDBを作成します。 覚えるためには手を動かすのが一番!!

作成するデータベース データベース名:questionbbs テーブル名:questiondata フィールド department,grade,contributor,login,title,content,dateの7つ。 属性はすべてtextです。 +--------------+-------+-------------+----------+-----------------+-----------------------------------+------------------------------+ | department | grade | contributor | login | title | content | date | | 環境情報学部 | 4年 | 深澤洋介 | t00815yf | Servletの参考書 | オススメの参考書ありませんか? | Sun Wed 08 15:09:25 JST 2003 | ※サブゼミ疑問解決掲示板に合わせてあります。

MySQLの起動 サーバーの起動 クライアントの起動 > mysqld-max --standalone(win95&98)  > mysqld-max-nt --standalone(win2000&XP) クライアントの起動  > mysql

データベースの作成 データベースの作成 mysql> create database questionbbs; データベースの一覧参照  mysql> show databases; データベースの選択  mysql> use questionbbs;

テーブルの作成 テーブルの作成 mysql> create table questiondata( department text,    grade text,    contributor text,    login text,    title text,    content text,    date text    );

データの挿入 データの挿入 mysql> insert into questiondata values( ‘環境情報学部’, ‘4年’, ‘深澤洋介’, ‘t00815yf’, ‘Servletの参考書’, ‘オススメの参考書ありませんか?’, ‘Sun Wed 08 15:09:25 JST 2003’ );

データの検索 テーブル内の全てのデータを検索 mysql> select * from questiondata; +--------------+-------+-------------+----------+-----------------+-----------------------------------+------------------------------+ | department | grade | contributor | login | title | content | date | | 環境情報学部 | 4年 | 深澤洋介 | t00815yf | Servletの参考書 | オススメの参考書ありませんか? | Sun Wed 08 15:09:25 JST 2003 | ※実際には一行が長すぎて綺麗に表示されません…(データ自体は正常なのでOK)

Javaのプログラムからデータベースを使えるようになろう 2.JDBC Javaのプログラムからデータベースを使えるようになろう

JDBCとJDBCドライバ JDBC JDBCドライバ JavaからDBMSへ接続するためのAPI(部品群)

JDBCドライバを使うことで、どのDBMSに接続しているかを気にしないでプログラムが書ける。 JDBCとJDBCドライバ JDBCドライバを使うことで、どのDBMSに接続しているかを気にしないでプログラムが書ける。 Javaプログラム JDBC JDBCドライバ MySQL DBMS PostgreSQL DBMS Oracle DBMS InterBase DBMS MySQL PostgresSQL Oracle InterBase

実習 イメージを掴むために実際にプログラムを動かしてみよう。

JDBCドライバのインストール JDBCドライバをダウンロード。 mm.mysql-2.0.14-bin.lzhを解凍する。 その中にあるmm.mysql-2.0.14-bin.jarファイルを… A.クラスパスに加える。 B.JDKをインストールしたディレクトリ/jre/lib/ext/以下に置く。   例)c:\jdk1.4/jre/lib/ext/ A. B.いずれかでOK。

サンプルを動かしてみよう サンプルプログラム ViewQuestions.java(投稿データを表示する) ContributeQuestion.java(新しく投稿する) ※今回はコンソール(ex.DOSプロンプト)で動作する   プログラムです。

ソースコードを見ながら解説 まずはViewQuestions.javaから。 コンパイルが通ったら実行してみよう。 >Javac ViewQuestions.java(リターン) >java ViewQuestions(リターン) データベースに接続中... ------------------------------ 投稿者:深澤洋介(t00815yf) 学部:環境情報学部/学年:4年 ----- タイトル:Servletの参考書(Sun Wed 08 15:09:25 JST 2003) 疑問の内容:分かりやすいServletの参考書ありませんか?

JDBCをimportする Java.sqlパッケージをimportします。 Import java.sql.*;

JDBCドライバを読み込む Class.forNameメソッドで利用したいJDBCドライバを読み込みます。今回はMySQL用のJDBCドライバです。 // JDBCドライバを読み込む String jdbcDriver = "org.gjt.mm.mysql.Driver"; Class.forName(jdbcDriver);

今回登場するクラス 3つのクラス Connection : DBMSと接続するクラス Statement : SQL文を実行するクラス ResultSet : 結果を保持するクラス

DBMSに接続する DBMSに接続するにはConnectionクラスを使います。 DriverManager.getConnection()メソッドからConnectionオブジェクトを取得し、以後はこのConnectionオブジェクトを通してDBMSにアクセスします。 Connection conn =  DriverManager.getConnection(url,user,password)

JDBC URL DBMSとの接続にはDBMS URLを指定する必要があります。URLの指定方法はデータベースの種類によって異なります。 MySQLの場合  jdbc:mysql://[サーバ名]/[データベース名]  例)jdbc:mysql://localhost/questionbbs/

DBMSとの接続を終了する DBMSを使い終わったら、close()メソッドを実行して接続を終了します。 conn.close();

SQL文を実行するステートメントを作成する SQL文を実行して結果を受け取るにはStatementクラスを使います。ConnectionクラスのcreateStatement()メソッドからStatementオブジェクトを取得します。 // SQL文を実行するステートメントを作成する Statement statement = conn.createStatement();

ステートメントを閉じる SQL文によるDBMSとのやり取りが終わったらステートメントを閉じましょう。 statement.close();

SQL文を実行して結果を受け取る StatementクラスのexecuteQuery()メソッドは、 SQL文を実行して、その結果(内容)をResultSetオブジェクトとして返します。 // SQL文を実行する ResultSet questionData = statement.executeQuery(sqlString);

ResultSet SQLの結果を表の形で保持しています。 管理は行単位で行ないます。 カーソルで今どの行を扱っているかを示します。 grade contributor title 4年 深澤洋介 Servletの参考書 岸健司 web.xmlの書き方 川勝名奈恵 データベースって何ですか カーソル カーソルで今どの行を扱っているかを示します。

ResultSet next()メソッド カーソルを次の行へ移動してtrueを返します。次の行が存在しない場合はfalseを返します。 grade contributor title 4年 深澤洋介 Servletの参考書 岸健司 web.xmlの書き方 川勝名奈恵 データベースって何ですか (1) (2) (3) (1) resultSet.next(); →カーソルが次の行へ (2) resultSet.next(); →カーソルが次の行へ (3) resultSet.next(); →次の行が存在しないのでfalseを返す。

ResultSet getString()メソッド 現在の行から、引数(フィールド名)で指定された列の値をStringとして返します。 grade contributor title 4年 深澤洋介 Servletの参考書 岸健司 web.xmlの書き方 川勝名奈恵 データベースって何ですか String hogehoge = resultSet.getString(“contributor”); →hogehogeには“深澤洋介”が入る。

ソースコードを見ながら解説 お次はContributeQuestion.javaです。 まずは実行してみよう。

result = statement.executeUpdate(sqlString); StatementクラスのexecuteUpdate()メソッドはSQL文を実行して、結果をintで返します。 // SQL文を実行する result = statement.executeUpdate(sqlString);

executeQuery()とexecuteUpdate() executeQuery():select文に用いる。 結果(実際のデータ)が欲しい。 ResultSetオブジェクトを返す。 executeUpdate():insert文、update文、delete文に用いる。 結果の取得が目的ではない。 insert文、update文、delete文は行数が返ってくる。何も返さないSQL文の場合は0が返ってくる。

まとめ

JDBC 3つの大事なクラス Connection : DBMSと接続するクラス Statement : SQL文を実行するクラス ResultSet : 結果を保持するクラス

JDBCドライバを使うことで、どのDBMSに接続しているかを気にしないでプログラムが書ける。 JDBCとJDBCドライバ JDBCドライバを使うことで、どのDBMSに接続しているかを気にしないでプログラムが書ける。 Javaプログラム JDBC JDBCドライバ MySQL DBMS PostgreSQL DBMS Oracle DBMS InterBase DBMS MySQL PostgresSQL Oracle InterBase

JDBCとJDBCドライバが 無かったら… MySQL用 Javaプログラム postgreSQL用 Javaプログラム Oracle用 Javaプログラム InterBase用 Javaプログラム 4種類のプログラムを書かなくてはならない MySQL DBMS PostgreSQL DBMS Oracle DBMS InterBase DBMS MySQL PostgresSQL Oracle InterBase

実習 サブゼミ疑問解決掲示板をDB対応にしてみよう。 余力のある人は、自分が作っていたwebアプリをDB対応にしてみよう。 今まではファイルに保存していました。 その部分をDB向けに書き換えれば… 余力のある人は、自分が作っていたwebアプリをDB対応にしてみよう。 まずはDBとテーブルの作成から。