第5回 データベースのブラウザを作る


 テーブル・ブラウザをインストールし実行する

 今回のサンプルをチェックするには、Java Pet Store(JPS)のデモが動いている方が好都合です。以下の手順では、JPSのデータベースが起動可能であることを前提にしていますので、まだJPSをインストールしていない人はぜひ挑戦してください。

  1. J2EEアプリケーションsystables.earを、ここからダウンロードしてください
  2. Cloudscapeを立ち上げます
  3. J2EEサーバを立ち上げます
  4. deploytoolを立ち上げます
  5. deploytoolのファイル・メニューから、先にダウンロードしたsystables.earを開きます
  6. deploytoolのツール・メニューから、[Deploy]をクリックします
  7. Webのブラウザを、次のURLで開きます(環境によって異なる可能性があります)
    http://localhost:8000/db/ex2/systable.jsp

 あとは、テーブル名を指定して、ブラウザの機能を選んで[show]ボタンを押せばいいのです。次のURLは、先のプログラムを多少改善したものです。本文中のサンプルは、基本的には、こちらのバージョンによっています。巻末のプログラムもこちらのものです。

http://localhost:8000/db/ex2/systable3.jsp


 

 プログラム・リスト


systable3.jsp
<%@ page import="java.sql.*, javax.naming.*, javax.sql.*" %>
<html>
<head>
  <title>テーブル・ブラウザ</title>
</head>
<body text="#000000" bgcolor="#FFFFC0">

<H2> Table Browser </H2>

<%! String table=null , type=null ; %>

<%
  Connection conn = null;
  Statement stmt = null;
  ResultSet result = null;
  String query = null;

  try {
    InitialContext ic = new InitialContext();
    DataSource datasource = (DataSource)  ic.lookup("java:comp/env/jdbc/EstoreDataSource");
    conn = datasource.getConnection();
  } catch( Exception e ){
    System.out.println( e );
  }
%>
<FORM METHOD="POST" ACTION="showtable3.jsp">
Table

<select NAME="table">

<%
  try{
    stmt = conn.createStatement();
    query = "Select SCHEMANAME, TABLENAME "
    + " from SYS.SYSTABLES t, SYS.SYSSCHEMAS s"
    + " where t.SCHEMAID = s.SCHEMAID " ;
    ResultSet rs = stmt.executeQuery( query );

    while( rs.next() ){
      String s0 = rs.getString( "SCHEMANAME");
      String s1 = rs.getString( "TABLENAME" );
    if ( s0.equals("APP") ){
      out.println("<option> " + s1 ); }
    else {
          out.println("<option> " + s0 + "." + s1 );
    }
  }
}
catch( SQLException e ){
System.out.println( e );
}
%>

</select>

<select NAME="type">
<option> Contents
<option> Attributes
</select>

<INPUT TYPE="submit" VALUE="Show"><p>
</FORM>

<%
table = request.getParameter("table");
type = request.getParameter("type");
%>

<%
if ( table != null && type != null ){
%>

<hr>
Table <%= type %> : <%= table %>
<hr><BR>
<table bgcolor="#336666">
<tr bgcolor="#aacd88">

<%
try{
stmt = conn.createStatement();
if ( type.equals("Contents") ) {
query = "Select * from " + table ;
} else {
if ( table.startsWith("SYS.")) table=table.substring(4);
query = "SELECT c.COLUMNNAME, c.COLUMNNUMBER,"
+ " c.COLUMNDATATYPE.getSQLstring() ,"
+ " c.COLUMNDATATYPE.isNullable() "
+ "FROM SYS.SYSCOLUMNS c, SYS.SYSTABLES t "
+ "WHERE c.REFERENCEID = t.TABLEID "
+ " AND t.TABLENAME = '" + table + "'"
+ "ORDER by c.COLUMNNUMBER ";
}

ResultSet rs = stmt.executeQuery( query );
ResultSetMetaData meta = rs.getMetaData();
int size = meta.getColumnCount();

if ( type.equals("Contents") ) {
for( int i = 0; i < size; i++ ){
out.println("<th>" + meta.getColumnLabel( i+1 ) + "</th>" );
}
} else {
%>
<th>COLUMNNAME</th>
<th>NUM</th>
<th>DATATYPE</th>
<th>Nullable</th>
<%
}

out.println("</tr>");

while( rs.next() ){
out.println("<tr bgcolor=\"#eeebcc\">");
String s = "" ;
for ( int j=0; j < size; j++)
s += "<td>" + rs.getString(j+1) + "</td>";
out.println(s+"</tr>");
}

}
catch( SQLException e ){
System.out.println( e );
}
%>

</table>

<%}%>

</body>
</html>

3/3
 

J2EEの基礎(第5回)
  テーブル・ブラウザを作る
  J2EEでのデータベースとの接続
テーブル・ブラウザをインストールし実行する

 

連載内容
J2EEの基礎
  第1回 Java Pet Storeで、J2EEを体験する(1)
  第2回 Java Pet Storeで、J2EEを体験する(2)
 

第3回 J2EEアプリケーションと配置(deployment)

  第4回 J2EEアプリケーションを構成するコンポーネント
第5回 データベースのブラウザを作る
  第6回 EJBにおけるコンテナとコンポーネント
  第7回 J2EEのセキュリティのキホンを知る
  第8回 J2EEのトランザクション処理


連載記事一覧




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間