| 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 をアクセスするものです。