帰宅して、JavaアプレットからMySQLのデータベースに接続するプログラムを書いてみる。いや、正しくは先日作成したJavaアプリケーションやJSPのソースをコピーしただけと言ったほうが正しいかも。まずはJavaアプレットから。
package javadb;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
public class DBConnectApplet extends JApplet {
/**
*
*/
private static final long serialVersionUID = 1L;
private Connection db = null;
public void init() {
try {
//JDBCドライバの読み込み
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch (Exception e) {
e.printStackTrace();
}
}
public void start() {
String sql_server = "localhost";
String sql_user = "hogehoge";
String sql_pass = "fizzbuzz";
String sql_db = "dbname";
//String sql_url = "jdbc:mysql://localhost/" + sql_db;
String sql_url = "jdbc:mysql://localhost/dbname?user=hogehoge&password=fizzbuzz";
try {
//MySQLのデータベースへ接続
//db = DriverManager.getConnection(sql_url, sql_user, sql_pass);
db = DriverManager.getConnection(sql_url);
//目的のテーブルを操作
//ステートメントオブジェクトの取得
Statement stmt = db.createStatement();
//クエリの準備
String query = "select id, name, address, tel, fax, mail, site, station from company";
//クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(query);
//テーブルカラムの設定
String[] tableColumn = { " id", "name", "address", "tel", "fax", "mail", "site", "station", };
DefaultTableModel tableModel = new DefaultTableModel(tableColumn, 0);
JTable table = new JTable(tableModel);
//検索された行数分ループ
while (rs.next()) {
Object[] tableData = {
String.format("%4d", rs.getInt("id")),
rs.getString("name"),
rs.getString("address"),
rs.getString("tel"),
rs.getString("fax"),
rs.getString("mail"),
rs.getString("site"),
rs.getString("station"),
};
//テーブルデータをテーブルに登録
tableModel.addRow(tableData);
//コンソールにも出力してみる
System.out.printf("%2dt%st%st%st%st%st%st%sn",
rs.getInt("id"),
rs.getString("name"),
rs.getString("address"),
rs.getString("tel"),
rs.getString("fax"),
rs.getString("mail"),
rs.getString("site"),
rs.getString("station")
);
}
//スクロールペインにテーブルを登録
JScrollPane scroll = new JScrollPane();
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scroll.getViewport().add(table);
//スクロールペインをアプレットに登録
getContentPane().add(scroll);
//データベースから切断
stmt.close();
//MySQLのデータベースとの接続を切断
db.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
次に、HTMLファイル中のappletタグの部分を抜粋。
<applet height="480" archive="./mysql-connector-java-5.1.5-bin.jar" width="640" code="javadb.DBConnectApplet.class"></applet>
違うのは、JDBCドライバを登録する部分と、データを表示させる部分ぐらいかもしれない。JDBCドライバは、Javaアプレットの場合は<applet>タグに指定する形になる。ちなみにJavaアプレットでは、セキュリティの関係上からDBに接続することはほとんど無い模様。いろいろと制約があるので、確かに不便かも。
データを表示させる部分は、コンソール出力に加えて、アプレットなのでJTableを使用してみた。
コンソール出力の結果はどこで確認出来るかというと、Internet Explolerの場合だと、Javaコンソールで確認出来る。
追記: Javaアプレットからデータベースに接続する (2009/11/08追加)
package javadb;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.sql.*;
public class DBConnectApplet extends JApplet {
/**
*
*/
private static final long serialVersionUID = 1L;
private Connection db = null;
public void init() {
try {
//JDBCドライバの読み込み
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
}
catch (Exception e) {
e.printStackTrace();
}
}
public void start() {
String sql_server = “localhost”;
String sql_user = “hogehoge”;
String sql_pass = “fizzbuzz”;
String sql_db = “dbname”;
//String sql_url = “jdbc:mysql://localhost/” + sql_db;
String sql_url = “jdbc:mysql://localhost/dbname?user=hogehoge&password=fizzbuzz”;
try {
//MySQLのデータベースへ接続
//db = DriverManager.getConnection(sql_url, sql_user, sql_pass);
db = DriverManager.getConnection(sql_url);
//目的のテーブルを操作
//ステートメントオブジェクトの取得
Statement stmt = db.createStatement();
//クエリの準備
String query = “select id, name, address, tel, fax, mail, site, station from company”;
//クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(query);
//テーブルカラムの設定
String[] tableColumn = { ” id”, “name”, “address”, “tel”, “fax”, “mail”, “site”, “station”, };
DefaultTableModel tableModel = new DefaultTableModel(tableColumn, 0);
JTable table = new JTable(tableModel);
//検索された行数分ループ
while (rs.next()) {
Object[] tableData = {
String.format(“%4d”, rs.getInt(“id”)),
rs.getString(“name”),
rs.getString(“address”),
rs.getString(“tel”),
rs.getString(“fax”),
rs.getString(“mail”),
rs.getString(“site”),
rs.getString(“station”),
};
//テーブルデータをテーブルに登録
tableModel.addRow(tableData);
//コンソールにも出力してみる
System.out.printf(“%2d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n”,
rs.getInt(“id”),
rs.getString(“name”),
rs.getString(“address”),
rs.getString(“tel”),
rs.getString(“fax”),
rs.getString(“mail”),
rs.getString(“site”),
rs.getString(“station”)
);
}
//スクロールペインにテーブルを登録
JScrollPane scroll = new JScrollPane();
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scroll.getViewport().add(table);
//スクロールペインをアプレットに登録
getContentPane().add(scroll);
//データベースから切断
stmt.close();
//MySQLのデータベースとの接続を切断
db.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
1件のコメント
コメントは受け付けていません。