Microsoft Word - Lab6.doc

Similar documents
(Microsoft Word - Lab5-PLSQL\203I\203u\203W\203F\203N\203g\202\314\210\332\215s.doc)

Copyright 2006 KDDI Corporation. All Rights Reserved page1

Microsoft Word - Lab5d-DB2組み込みSQL.doc

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

how-to-decide-a-title

Copyright 2010 Sumitomo Mitsui Banking Corporation. All Rights Reserved.

PowerPoint Presentation

MySQL5.0データベース ログファイルおよびステータスの収集

Copyright 2008 NIFTY Corporation All rights reserved. 2

初心者にもできるアメブロカスタマイズ新2016.pages

- 2 Copyright (C) All Rights Reserved.

IP IP All contents are Copyright (c) All rights reserved. Important Notices and Privacy Statement. page 2 of 39

Copyright All Rights Reserved. -2 -!

Microsoft PowerPoint - Tutorial_2_upd.ppt

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


IPA:セキュアなインターネットサーバー構築に関する調査

Microsoft Word - 最終版 バックせどりismマニュアル .docx

! Copyright 2015 sapoyubi service All Rights Reserved. 2

JDBCアクセス

Microsoft Word - ACCESSINGO...

KDDI

GEC-Java

intra-mart Accel Platform

keysql42_usersguide

dekiru_asa

Caché SQL に関するよくある質問

untitled

- 2 Copyright (C) All Rights Reserved.

Oracle9i JDeveloperによるWebサービスの構築

// JDBC // CallableStatement cs = null; try { cs = conn.preparecall("{call DUMMY_PROC(?,?)}"); cs.setstring(1, "This is a test"); cs.registeroutparame

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


Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

URL AdobeReader Copyright (C) All Rights Reserved.

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

健康保険組合のあゆみ_top

リバースマップ原稿2

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

PowerPoint プレゼンテーション

20 180pixel 180pixel Copyright 2014 Yahoo Japan Corporation. All Rights Reserved.

0315_F1_8iJDBC-SQLJ.PDF

システム管理者ガイド GIGAPOD 3 システム管理者ガイド - 負荷分散構成 第 1.01 版 2013 年 3 月 改訂履歴 No バージョン 日付 作成者 改訂者 補足 /09 トライポッドワークス 初稿 /03 トライポッドワークス cr

SQLインジェクション対策再考


[ ][ ] HTML [ ] HTML HTML

データベースアクセス

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

PowerPoint プレゼンテーション

Contents

2007 Indie s Movie Project. All Rights Reserved. 02

Q&A集

Microsoft Word - FWTEC0003.doc

やよいの顧客管理

弥生給与/やよいの給与計算

弥生 シリーズ

弥生会計 プロフェッショナル/スタンダード/やよいの青色申告

弥生会計/やよいの青色申告

弥生会計 ネットワーク/プロフェッショナル2ユーザー

開発・運用時のガイド JDK8への移行に伴う留意点 [UNIX]


soto44_kosei_03.pdf


aichi_1_24_b

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

ネットワーク設定マニュアル(Windows Vista編)

機能紹介 : Java ゲートウェイとインターシステムズ製品

サンプル Java プログラム

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

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

PLQ-20 取扱説明書 詳細編

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

Part1 159 a a

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


IBM FormWave for WebSphere 公開技術文書 #FWTEC0012 リッチ ユーザーインターフェースのクライア ント操作画面サンプルでブランク伝票が一覧に すべて表示されない問題の対処方法 最終更新日 :2009/11/20 Copyright International Bu

ストラドプロシージャの呼び出し方

Calpont InfiniDBマルチUM同期ガイド

2

Webシステム授業資料

storage-sdk-Java

1000 Copyright(C)2009 All Rights Reserved - 2 -

PowerPoint プレゼンテーション

Java言語 第1回

tkk0408nari

LP-S8160 LP-S7160 LP-S6160

LP-M8040シリーズ

LP-M5300シリーズ

スライド 1

(a + b)(a b) = (a + b)a (a + b)b = aa + ba ab bb = a 2 b 2 (a + b)(a b) a 2 b 2 2 (1 x)(1 + x) = 1 (1 + x) x (1 + x) = (1 + x) (x + x 2 ) =

report03_amanai.pages

report05_sugano.pages

目次 はじめに インストール JDBC ドライバの配置 初期登録ユーザー バージョンアップ 評価版の制限....8 参考.JDBC ドライバの入手と設定....9 ) I2C Co.,Ltd.. All

Oracle SOA Suite 11gコンポジットに対するSOASchedulerの構成

Copyright 2009, SofTek Systems, Inc. All rights reserved.

Transcription:

I Oracle からのアプリケーションの移行ハンズオン (Lab6 Lab6) 日本アイアイ ビービー エムエム株式会社

Contents CONTENTS...2 1. はじめに...3 2. 内容...3 3. SELECT 文を実行実行する JAVA プログラム...3 3.1 ソースコードの確認...3 3.2 ソースコードの編集...4 3.3 プログラムのコンパイル...5 3.4 プログラムの実行...6 4. ストアド ファンクションファンクションを呼び出す JAVA プログラム...7 4.1 ソースコードの確認...7 4.2 ソースコードの編集...8 4.3 プログラムのコンパイル...10 4.4 プログラムの実行...10 2

1. はじめに このハンズオンでは Oracle 用に記述された Java プログラムを DB2 で稼動するように書き換えを行い 実際に稼動することを確認します 2. 内容 このハンズオンでは以下の内容を実施します SELECT 文を実行する Java プログラム ストアド ファンクションを呼び出す Java プログラム 3. SELECT 文を実行実行する Java プログラム この章では Oracle 用に書かれた SELECT 文を実行する Java プログラムを DB2 用に編集し 実行できることを確認します 3.1 ソースコードの確認 _ ソースコードの確認最初に /workshop/lab6/source ディレクトリに移動し orasampl1.java ファイルの内容を確認します db2inst1 ユーザーで以下のを実行します cd /workshop/lab6/source cat /orasampl1.java db2inst1@db2v97onsles10:~> cd /workshop/lab6/source db2inst1@db2v97onsles10:/workshop/lab6/source> cat orasampl1.java class orasampl1 { 省略 3

以下のようなソースコードが確認できます orasampl1.java class orasampl1 { throws Exception { Class.forName ("oracle.jdbc.driver.oracledriver"); Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora11g","sales", "password"); Statement stmt = con.createstatement (); ResultSet rs = stmt.executequery ("select dept_code,dept_name from departments"); while (rs.next ()) System.out.println (rs.getstring (1) + " " + rs.getstring(2)); このプログラムは Oracle に接続して DEPARTMENTS 表を選択して DEPT_CODE,DEPT_NAME の一覧を出力するプログラムです 3.2 ソースコードの編集 _ ソースコードの編集 vi で orasampl1.java の以下の三箇所を DB2 で実行できるように書き直します ( 時間のない方や vi の操作に不慣れな方は /workshop/lab6/source_modified/ ディレクトリに修正済みのソースがありますのでこちらを使用してください ) 変更箇所 1. ドライバーのクラス名の変更 :7 行目更新前 :Class.forName ("oracle.jdbc.driver.oracledriver oracle.jdbc.driver.oracledriver"); 更新後 :Class.forName ("com.ibm.db2.jcc.db2driver com.ibm.db2.jcc.db2driver"); 2.URL ユーザー ID パスワードの変更:8 行目更新前 :Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora11g jdbc:oracle:thin:@localhost:1521:ora11g","sales sales", "password password"); 更新後 :Connection con = DriverManager.getConnection ("jdbc:db2://localhost:60000/labdb jdbc:db2://localhost:60000/labdb","db2inst1 db2inst1","db2inst1 db2inst1"); 3. スキーマ名の指定 :10 行目更新前 :ResultSet rs = stmt.executequery ("select dept_code,dept_name from departments"); 更新後 :ResultSet rs = stmt.executequery ("select dept_code,dept_name from sales.departments"); 4

以下は修正例です ( 修正例では 変更前のものをコメントで残していますが直接書き換えて頂いても構いません ) orasampl1.java 修正例 class orasampl1 { throws Exception { // Class.forName ("oracle.jdbc.driver.oracledriver"); Class.forName ("com.ibm.db2.jcc.db2driver"); // Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora11g","sales", "password"); Connection con = DriverManager.getConnection ("jdbc:db2://localhost:60000/labdb","db2inst1","db2inst1"); Statement stmt = con.createstatement (); // ResultSet rs = stmt.executequery ("select dept_code,dept_name from departments"); ResultSet rs = stmt.executequery ("select dept_code,dept_name from sales.departments"); while (rs.next ()) System.out.println (rs.getstring (1) + " " + rs.getstring(2)); 3.3 プログラムのコンパイル _ プログラムのコンパイル書き換えたプログラムをコンパイルします 変更したソースコードがあるディレクトリで以下のを実行します javac orasampl1.java ls -ltr db2inst1@db2v97onsles10:/workshop/lab6/source> javac orasampl1.java db2inst1@db2v97onsles10:/workshop/lab6/source> ls -ltr 合計 12 -rw-r--r-- 1 db2inst1 db2user 627 2009-08-30 14:32 orasampl2.java -rw-r--r-- 1 db2inst1 db2user 758 2009-08-30 15:53 orasampl1.java -rw-r--r-- 1 db2inst1 db2user 1365 2009-08-30 17:31 orasampl1.class コンパイル後 orasampl1.class ファイルが作成されていることが確認できます 5

3.4 プログラムの実行 _ プログラムの実行 orasampl1.class ファイルがあるディレクトリで以下のを実行し プログラムを実行します java orasampl1 db2inst1@db2v97onsles10:/workshop/lab6/source> java orasampl1 A00 ADMINISTRATION SYSTEMS B01 INFORMATION CENTER C01 MANUFACTURING SYSTEMS D11 OPERATIONS D21 PLANNING E01 SOFTWARE SUPPORT E11 SPIFFY COMPUTER SERVICE DIV. E21 SUPPORT SERVICES DEPARTMENTS 表の 8 行のデータが出力されれば 正しく実行できています 6

4. ストアド ファンクションファンクションを呼び出す Java プログラム この章では アウト パラメーターを持つストアド ファンクションを呼び出す Java プログラムを DB2 用に書き換えます アウト パラメーターを持つストアド ファンクションは DB2 9.7 ではサポートされていなため Lab5 でストアド プロシージャーに書き換えたものを Call するように書き換えます 4.1 ソースコードの確認 _ ソースコードの確認 /workshop/lab6/source ディレクトリに移動し orasampl2.java ファイルの内容を確認します db2inst1 ユーザーで以下のを実行します cd /workshop/lab6/source cat /orasampl2.java db2inst1@db2v97onsles10:~> cd /workshop/lab6/source db2inst1@db2v97onsles10:/workshop/lab6/source> cat orasampl2.java class orasampl2 { 省略 以下のようなソースコードが確認できます orasampl2.java class orasampl2 { throws Exception { Class.forName ("oracle.jdbc.driver.oracledriver"); Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora11g","sales", "password"); String SpCall = "{? = call count_projects(1,?)"; CallableStatement stmt = con.preparecall(spcall); stmt.registeroutparameter(1, Types.INTEGER); stmt.registeroutparameter(2, Types.INTEGER); stmt.execute(); System.out.println("Account ID:"+ stmt.getstring(2)); System.out.println("Projects :"+ stmt.getstring(1)); 7

このプログラムは Oracle に接続し アウト パラメーターを持つストアド ファンクション COUNT_PROJECTS を呼び出し ストアド ファンクションから返された値を出力するプログラムです 4.2 ソースコードの編集 _ ストアド プロシージャーの確認ソースコードの編集を行う前に LABDB 上にアウト パラメーターを持つストアド ファンクションの代わりに呼び出すストアド プロシージャーが存在していることを確認します 以下のを実行し COUNT_PROJECTS ストアド プロシージャーの DDL を確認します db2look -d labdb -e grep -A 50 \"COUNT_PROJECTS\" db2inst1@db2v97onsles10:~> db2look -d labdb -e grep -A 50 \"COUNT_PROJECTS\" -- ユーザー ID が指定されていません db2look は環境変数 USER の使用を試行します -- USER は以下のとおりです : DB2INST1 -- 表の DDL の作成 CREATE PROCEDURE "COUNT_PROJECTS" (p_empid IN employees.emp_id%type, o_acct_id OUT employees.acct_id%type, out_return OUT NUMBER) AS -- /* -- ------------------------------------------------------------------------------------- -- DESCRIPTION: Function that counts the project based on the employeed id and also -- returns information on total projects of the account to which employee id belongs -- 省略 DB2 9.7 では アウト パラメーターをもつストアド ファンクションをサポートしていないため ストアド ファンクションの戻り値として受け取る値を ストアド プロシージャーのアウト パラメーター (out_return) として受け取るように変更しています 8

_ ソースコードの編集 vi で orasampl2.java の以下の 5 箇所を DB2 用に書き直します ( 時間のない方や vi の操作に不慣れな方は /workshop/lab6/source_modified/ ディレクトリに修正済みのソースがありますのでこちらを使用してください ) 変更箇所 1. ドライバーのクラス名の変更 :7 行目更新前 :Class.forName ("oracle.jdbc.driver.oracledriver oracle.jdbc.driver.oracledriver"); 更新後 :Class.forName ("com.ibm.db2.jcc.db2driver com.ibm.db2.jcc.db2driver"); 2.URL ユーザー ID パスワードの変更:8 行目更新前 :Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora jdbc:oracle:thin:@localhost:1521:ora11g 11g","sales sales", "password password"); 更新後 :Connection con = DriverManager.getConnection ("jdbc:db2://localhost:60000/labdb jdbc:db2://localhost:60000/labdb","db2inst1 db2inst1","db2inst1 db2inst1"); 3. スキーマ名の指定と戻り値をアウト パラメータに変更 :9 行目更新前 :String SpCall = "{?? = call count_projects(1,?)"; 更新後 :String SpCall = "{call sales.count_projects(1,?,?).count_projects(1,?,?)"; 4. 取得するパラメーターを変更 :14 行目更新前 :System.out.println("Account ID:"+ stmt.getstring(2)); 更新後 :System.out.println("Account ID:"+ stmt.getstring(1)); 5. 取得するパラメーターを変更 :15 行目更新前 :System.out.println("Projects :"+ stmt.getstring(1)); 更新後 :System.out.println("Projects :"+ stmt.getstring(2)); 以下は修正例です ( 修正例では 変更前のものをコメントで残していますが直接書き換えて頂いても構いません ) orasampl2.java 修正例 class orasampl2 { throws Exception { // Class.forName ("oracle.jdbc.driver.oracledriver"); Class.forName ("com.ibm.db2.jcc.db2driver"); // Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ora11g","sales", "password"); Connection con = DriverManager.getConnection ("jdbc:db2://localhost:60000/labdb","db2inst1", b2://localhost:60000/labdb","db2inst1", "db2inst1"); // String SpCall = "{? = call count_projects(1,?)"; String SpCall = "{call sales.count_projects(1,?,?)"; CallableStatement stmt = con.preparecall(spcall); stmt.registeroutparameter(1, Types.INTEGER); stmt.registeroutparameter(2, Types.INTEGER); stmt.execute(); // System.out.println("Account ID:"+ stmt.getstring(2)); System.out.println("Account ID:"+ stmt.getstring(1)); // System.out.println("Projects :"+ stmt.getstring(1)); System.out.println("Projects :"+ stmt.getstring(2)); 9

4.3 プログラムのコンパイル _ プログラムのコンパイル書き換えたプログラムをコンパイルします 変更したソースコードがあるディレクトリで以下のを実行します javac orasampl2.java ls -ltr db2inst1@db2v97onsles10:/workshop/lab6/source> javac orasampl2.java db2inst1@db2v97onsles10:/workshop/lab6/source> ls -ltr 合計 16 -rw-r--r-- 1 db2inst1 db2user 758 2009-08-30 15:53 orasampl1.java -rw-r--r-- 1 db2inst1 db2user 1365 2009-08-30 17:31 orasampl1.class -rw-r--r-- 1 db2inst1 db2user 960 2009-08-30 19:37 orasampl2.java -rw-r--r-- 1 db2inst1 db2user 1352 2009-08-30 19:37 orasampl2.class コンパイル後 orasampl2.class ファイルが作成されていることが確認できます 4.4 プログラムの実行 _ プログラムの実行 orasampl2.class ファイルがあるディレクトリで以下のを実行し プログラムを実行します java orasampl2 db2inst1@db2v97onsles10:/workshop/lab6/source> java orasampl2 Account ID:1 Projects :2 Account ID:1 と Projects:2 が出力されれば 正しく実行できています 以上でアプリケーションの移行ハンズオンは終了です お疲れ様でした 10

Copyright IBM Corporation 2009 All Rights Reserved. 11