5.JDBC API ( Applet ) |
(1) JDBC API ( Applet ) |
・アプレットは、自分がダウンロードされたサイトのファイルシステムしかアクセスできないので、DBMS も Web サーバ上におく必要があります( DBMS サーバにできない)。
・アプレットは、自分をダウンロードしたクライアントのネィティブファイルはアクセスできません。
// HelloWorldAppletMySQLJDBC.java import java.applet.Applet; import java.sql.*; import java.awt.*; public class HelloWorldAppletMySQLJDBC extends Applet { public void paint(Graphics g) { try { Class.forName("org.gjt.mm.mysql.Driver"); Connection con = DriverManager.getConnection ("jdbc:mysql:///hellodb"); g.drawString("MySQL 検索結果",20,30); System.out.println("MySQL 検索結果"); Statement stmt = con.createStatement(); String sql = "SELECT * FROM hello_world_table"; ResultSet rs = stmt.executeQuery(sql); int r = 50; while(rs.next()){ int no = rs.getInt("NO"); String lang = rs.getString("LANGUAGE"); String msg = rs.getString("MESSAGE"); String txt = no + " " + lang + " " + msg ; g.drawString(txt,20,r); r = r + 15; System.out.println("console : " + txt); } stmt.close(); con.close(); } catch (SQLException e) { System.out.println("Exce:" + e.getMessage()); System.out.println(" SQL:" + e.getSQLState()); System.out.println(" Cod:" + e.getErrorCode()); } catch (Exception e2) { System.out.println("Excep:" + e2.getMessage()); } } } | Applet 必須 java.sql 必須 paint 用 Applet 派生クラス *1 ドライバクラスのロード *2 データベースに接続 コンソールにも表示 左記内容を表示 *3 SQL ステートメント オブジェクトの生成 *4 SQL 文の実行と結果取得 *5 検索された行数分ループ int 型の項目 NOを取得 文字型の項目 言語と メッセージを取得 出力内容編集 Applet出力 コンソールにも表示 (java console ) *6 クローズ SQL stmt をクローズ データベースから切断 *7 Exception エラー 標準エラーストリーム に出力 |
<!--jl355_HelloWorldAppletMySQLJDBC.html -->
<html lang="ja">
:
<hr>
<applet code="HelloWorldAppletMySQLJDBC"
archive="mysql-connector-java-2.0.14-bin.jar"
width="100" height="100">
applet not found
</applet>
:
</html>
| アプレットクラス JDBC ドライバ 表示窓のサイズ 代替メッセージ |
※*1 〜 *7 は前章の説明と同じですので、ここでは省略します。 ※MySQL テーブル 定義の内容 ==> hello_world_table |
webapps (ルート) ・・・ "C:\Program Files\Apache Group\Tomcat 4.1\webapps\" │ ├─ examples │ ├─ applet ─┬─ HelloWorldAppletMySQLJDBC.class │ │ ├─ HelloWorldAppletMySQLJDBC.html │ │ └─ HelloWorldAppletMySQLJDBC.java │ │ │ ├─ jsp ─── │ ├─ servlet ─── │ │ │ └─ WEB-INF ─┬─ web.xml │ ├─ lib ─ mysql-connector-java-2.0.14-bin.jar
MySQL Connector/Jドライバ は、Java Aplication,JSP/Servlet,Applet で使用できるように、JDBC フォルダーを作って、ドライバがロードできるようにする仕組みが必要です。いずれ実用編で、実際のシステム開発の設計、製造をサンプルとして説明していきたいと思います。
(2) もう一つの Applet の例 |
// HelloWorldAppletMySQLJDBC2.java import java.applet.Applet; import java.sql.*; import java.awt.*; public class HelloWorldAppletMySQLJDBC2 extends Applet { Connection con = null; public void init() { try { System.out.println("applet start"); Class.forName("org.gjt.mm.mysql.Driver"); con = DriverManager.getConnection ("jdbc:mysql:///hellodb"); } catch (SQLException e) { System.out.println("Excep:" + e.getMessage()); System.out.println(" SQL :" + e.getSQLState()); System.out.println(" Code:" + e.getErrorCode()); } catch (Exception e2) { System.out.println("Excep:" + e2.getMessage()); } } public void paint(Graphics g) { try { g.drawString("MySQL 検索結果2",20,30); Statement stmt = con.createStatement(); String sql = "SELECT * FROM hello_world_table"; ResultSet rs = stmt.executeQuery(sql); int r = 50; while(rs.next()){ int no = rs.getInt("NO"); String lang = rs.getString("LANGUAGE"); String msg = rs.getString("MESSAGE"); String txt = no + " " + lang + " " + msg ; g.drawString(txt,20,r); r = r + 15; System.out.println("console : " + txt); } stmt.close(); } catch (SQLException e) { System.out.println("Excep:" + e.getMessage()); System.out.println(" SQL :" + e.getSQLState()); System.out.println(" Code:" + e.getErrorCode()); } catch (Exception e2) { System.out.println("Excep:" + e2.getMessage()); } } public void destroy() { try { if ( con != null ) con.close(); System.out.println("applet end"); } catch (SQLException e) { System.out.println("Excep:" + e.getMessage()); System.out.println(" SQL :" + e.getSQLState()); System.out.println(" Code:" + e.getErrorCode()); } catch (Exception e2) { System.out.println("Excep:" + e2.getMessage()); } } } | コメント con オブジェクト (最初1回だけ) コンソール開始MSG ドライバロード DB 接続 例外 ここから 毎回の処理 縦の表示位置 複数行処理 NOの値 LANGUAGEの値 MESSAGEの値 表示行編集 表示 縦の表示位 + 50 コンソールにも表示 SQL 文クローズ 例外 (消滅時1回だけ) DB 切断 終了MSG Applet end |
Applet はクライアント側で実行されます。JDBC はその実行中にサーバーと通信してDB をアクセスするものです。