PowerPoint Presentation

Similar documents
1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

tkk0408nari

データベースアクセス

Javaアプリケーション開発ガイド入門編

Microsoft Word - Android_SQLite講座_画面800×1280

プレポスト【問題】

プログラミング基礎I(再)

Java 入門 6 Java 入門 6 - データベースにアクセスする Version 1.0 Kyosuke Yanai Copyright(c) 2010 Kyosuke Yanai

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

PowerPoint Presentation

Microsoft Word - Lab6.doc

FileMaker ODBC and JDBC Guide

GUIプログラムⅡ

Microsoft Word - ACCESSINGO...

Prog1_10th

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Thesis Template

Microsoft Word - JDBC検証 docx

データアダプタ概要

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

mySQLの利用

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

JavaプログラミングⅠ

FileMaker 16 ODBC と JDBC ガイド

第14回若年者ものづくり競技大会「業務用ITソフトウェア・ソリューションズ」職種 模擬競技課題

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

WEBシステムのセキュリティ技術

FileMaker 15 ODBC と JDBC ガイド

ガイダンス

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

FileMaker ODBC and JDBC Guide

スライド 1

10th Developer Camp - B5

FileMaker ODBC と JDBC ガイド

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Attain3 インストール説明書

とても使いやすい Boost の serialization

テーブルの確認 sqlite>.tables.tables コマンドでデータベース内のテーブル一覧を表示する テーブルスキーマの表示 sqlite>.schema mytable.schema コマンドで指定のテーブルのスキーマを表示できる テーブル出力の整形.explain コマンドを使うと テー

intra-mart Accel Platform

Prog2_10th

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

Microsoft Word - tutorial3-dbreverse.docx

PowerPoint プレゼンテーション

Microsoft Word - JDBC-ODBCu691cu8a3c docx

VB実用Ⅲ⑩ フリーデータベースⅡ

PowerPoint Presentation

Webシステム授業資料

Microsoft Word - JDBCドラバーの設定.doc

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

オブジェクト指向プログラミング・同演習 5月21日演習課題

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

TopLink å SampleClient.java... 5 Ò readallsample() querysample() cachesample() Ç..

Prog2_9th

Microsoft PowerPoint ppt

(Microsoft Word - \225\361\215\220\217\221_\215K.doc)

PowerPoint プレゼンテーション

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

早分かりS2Dao

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

0315_F1_8iJDBC-SQLJ.PDF

Java講座

文字列操作と正規表現

Microsoft Word - Android_SQLite講座_画面800×1280

GEC-Java

Microsoft認定資格問題集(70-483_demo)

S2Dao入門

メソッドのまとめ


プレポスト【問題】

Microsoft PowerPoint - prog03.ppt

Web JDBC JDBC Java JDBC DataBase Web CHtmlView...

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

Microsoft PowerPoint pptx

Java言語 第1回

intra-mart Accel Platform

Microsoft PowerPoint - prog09.ppt

スライド 1

PowerPoint Presentation

ADempiere (3.5)

PowerPoint プレゼンテーション

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - prog09.ppt

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

JavaプログラミングⅠ

S2DaoでもN:Nできます

Javaプログラムの実行手順

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

MxLogonサーバサイドツールキット用UI

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

SQL インジェクションの脆弱性

PowerPoint プレゼンテーション

Q&A集

Transcription:

上級プログラミング 2( 第 5 回 ) 工学部情報工学科 木村昌臣

今日のテーマ データベース入門 データベースシステムの用意の仕方 データベースを作ってみる データベースを使ってみる データベースプログラミング JDBCを使った検索プログラム JDBCを使った更新プログラム

データベース入門 今回の説明は Windows 環境を前提としているため Linux など他のプラットフォーム上で作業を行う場合は 読み替えが必要 ( 基本的にやることは同じ )

データベース 大量データを蓄積し 検索を可能にするシステム 様々な構造のシステムが考案され使われてきた 階層型データベース ネットワークデータベース リレーショナルデータベース オブジェクト指向データベース XML データベース など データベースのデータを管理するシステムをデータベース管理システム (DBMS) という

リレーショナルデータベース データは表形式で保持される 表のことをテーブルと呼ぶ 検索言語は SQL( 国際標準 ) DML( データ操作言語 ) データ検索はSELECT 文 データ更新はUPDATE 文 データ挿入はINSERT 文 データ削除はDELETE 文 DDL( データ記述言語 )

前提 : 下記のサイトからインストーラー を入手 インストール済みとする http://www.postgresql.org/download/

インストール後にすること データベースクライアント psql.exe を実行してみる スタートメニューから実行すると管理ユーザーとしてデフォルトデータベース template1 に接続される

データベースを作成する create database データベース名 という DDL 文を実行すると その名前のデータベースが新規に作成される さらに接続用ユーザーを作成する create user ユーザー名 password パスワード

データベースとテーブル ユーザの関係 接続 データベース ユーザー ( データベース用 ) 検索追加削除 テーブル テーブル 登録

テーブルを作る create table テーブル名 ( 列名データ型, 列名データ型, データ型の例 : 列名データ型 ) 可変文字列 VARCHAR( バイト数 ) 整数値 INTEGER 実数値 REAL 正確な数値 NUMBER( 有効桁数, 小数点下桁数 )

データの検索 (SELECT 文 ) テーブル T_SHOHIN から商品コードが 23333 である商品の単価を取り出す T_SHOHIN SELECT 単価 FROM T_SHOHIN WHERE 商品コード = 23333

データの挿入 (INSERT 文 ) 新製品 MP3 プレーヤー ( 単価 25000 円 ) を商品コード 10003 として登録したい T_SHOHIN INSERT INTO T_SHOHIN VALUES ( 10003, MP3 プレーヤー, 25000)

データの変更 (UPDATE 文 ) 商品コード 10001 の商品の単価を 15000 円に修正したい T_SHOHIN UPDATE T_SHOHIN SET 単価 =15000 WHERE 商品コード = 10001 同じレコードの二つ以上のフィールドを変更したい場合は SET 列名 1= XXXX, 列名 2= YYYY のように列記する

データの削除 (DELETE 文 ) 商品コード 10001 の商品をマスタから削除したい T_SHOHIN DELETE FROM T_SHOHIN WHERE 商品コード = 10001

JDBC Java Database Connectivity Java プログラムからリレーショナルデータベースに対し検索 更新するためのインターフェイス (API) SQL をリレーショナルデータベースへ渡し 結果を取得するためのインターフェイス 標準化されているが 実際に接続するためには 個々のデータベースに対応した JDBC ドライバ ( クラス ) を利用する必要あり

JDBC を使った JAVA アプリケーションとリレーショナルデータベースの通信方法 出展 :http://www-06.ibm.com/jp/software/ data/developer/library/techdoc/jdbc.html

JDBC の種類 Type1 (JDBC-ODBC ブリッジ ) Microsoft 社のデータベース接続 API 経由で接続 ODBCドライバが導入されていることが前提 クライアントマシン DB サーバー 画像の出展 :http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc02.html

JDBC の種類 Type2 ( ネイティブブリッジドライバ ) データベース固有の接続方式経由で接続 データベース専用クライアントソフト ( ドライバ ) を利用するため その導入が前提 クライアントマシン DB サーバー 画像の出展 :http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc02.html

JDBC の種類 Type3 ( ネットプロトコルドライバ ) 中継サーバー経由でデータベースサーバーに接続 JDBCドライバはJavaのみで作られているため クライアントのプラットフォームに依存しない中継サーバー DBサーバークライアントマシン 画像の出展 :http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc02.html

JDBC の種類 Type4 データベース製品に対し 専用の JDBC が直接接続 JDBC ドライバは Java のみで作られているため クライアントのプラットフォームに依存しない クライアントマシン DB サーバー 画像の出展 :http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc02.html

JDBC を使ったプログラムを動かすために必要な設定 JDBC ドライバが含まれているディレクトリもしくは JAR ファイルがある場所 ( 絶対パス ) を環境変数 CLASSPATH に追加 データベース検索をする Java プログラムのコンパイルや実行前に次のコマンドを実行 SET CLASSPATH=C: temp postgresql- 9.4.1208.jre6.jar;%CLASSPATH% Windows の マイコンピューター の システムのプロパティ の 詳細設定 で設定することも可 この例では ドライバが含まれる JAR ファイルを C: temp ディレクトリにコピーしている

データベースプログラミング

データベース利用プログラムの構成 Java プログラム ステートメントオブジェクト SQL ドライバマネージャ 接続 ( オブジェクト ) データベース接続ドライバ DB ロード

データベース利用プログラムの構成 データベース接続ドライバのロード 接続 ( コネクション ) の確立 URL やユーザー パスワードの設定 DB 名 ( 例 ) jdbc:postgresql://localhost:5432/test1 ユーザー oops パスワード pass ステートメントオブジェクトの作成 SQL の送信 検索の場合は結果セットの取得も

JDBC を使った検索プログラム (1/3) import java.sql.*; public class JDBC_PSQL { public static void main(string[] args) { try { String url="jdbc:postgresql://localhost:5432/test1" Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url, oops", pass"); Statement stmt = con.createstatement(); 続く

JDBC を使った検索プログラム (2/3) String sql = "SELECT * FROM TEST_TABLE"; ResultSet rs = stmt.executequery(sql); while(rs.next()){ String sname = rs.getstring("name"); int age = rs.getint("age"); String saddr = rs.getstring("address"); System.out.println(sName+" "+age +" "+saddr); }

JDBC を使った検索プログラム (3/3) } stmt.close(); con.close(); } catch (Exception e) { e.printstacktrace(); } }

結果セット (ResultSet) オブジェクト 検索結果が格納されるオブジェクト 実際は 検索結果の取得行を指し示す役割を果たすもの ( カーソル ) であり 検索結果の実体が全て結果セットオブジェクトに格納されるわけではない Statement オブジェクトのメソッド executequery() の戻り値として取得 ResultSet rs = stmt.executequery(sql 文 ); next メソッドで次の行へ 次の行があれば true を返し 最終行など次の行がなければ false を返す

テーブルの定義 ( 再掲 ) create table test_table ( ID VARCHAR(5), NAME VARCHAR(50), AGE INTEGER, ADDRESS VARCHAR(50), ) データ型の例 : 可変文字列 VARCHAR( バイト数 ) 整数値 INTEGER 実数値 REAL 正確な数値 NUMBER( 有効桁数, 小数点下桁数 )

結果セットのメソッド ( データ取得用 ) get 型名 ( 列名 ) もしくはget 型名 ( 列番号 ) の形をしている 例 )NAME 列 ( 文字列 ) を取得する際 NAME 列が左から1 番目にあれば 次の二つは同じ getstring( NAME ) getstring(1) 一列目は1とカウントする点に注意 例 )AGE 列 ( 整数 ) の場合 getint( AGE ) getint(2) [ 参考 ]http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/resultset.html

JDBC を使った更新プログラム (1/3) import java.sql.*; public class JDBC_UPDATE { public static void main(string[] args) { try { String url="jdbc:postgresql://localhost:5432/test1" Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url, oops", pass"); Statement stmt = con.createstatement(); 続く

JDBC を使った更新プログラム (2/3) String sql= INSERT INTO TEST_TABLE " sql+= VALUES sql+= ( A5, 静御前,21,' 京都府京都市 )" stmt.executeupdate(sql); 更新時にはステートメントオブジェクトの executeupdate メソッドを使う

JDBC を使った更新プログラム (3/3) stmt.close(); con.close(); } } } catch (Exception e) { e.printstacktrace(); }

PreparedStatement 同じ SQL 文を何度も利用する場合は あらかじめ SQL 文だけを先にコンパイルしておき それを使いまわす仕組みを使ったほうがお得 PrepareStatement クラスを使うと対象とする SQL を一度だけコンパイルし 使いまわせる Statement を用いる方法では SQL を実行するごとにコンパイルされてしまう SQL 文で あとで埋めたい部分 ( 値などのパラメータ ) は? にしておく SQL インジェクション対策として有効

PreparedStatement を使った更新プログラム PreparedStatement prestmt; String sql = "INSERT INTO TEST_TABLE VALUES (?,?,?,?)"; prestmt = con.preparestatement(sql); String[] ID = { A6", A7", A8"}; String[] name = { 山田俊雄, 並木幸治, 高橋美紀 "}; int[] age = {62,75,61}; String[] address = {" 神奈川県横須賀市 ", " 高知県高知市 ", " 埼玉県越谷市 "};

PreparedStatement を使った更新プログラム for(int i = 0; i < 3; i++) { prestmt.setstring(1, ID[i]); prestmt.setstring(2, name[i]); prestmt.setint(3, age[i]); prestmt.setstring(4, address[i]); } prestmt.executeupdate(); prestmt.setstring(1, ID[i]); 一番目の? マークに ID[i] の値を置く