目次へ

解答例 - 実習課題4 - 5.ResultSetを用いた更新処理

(実習課題4)

PostgreSQLのJDBCドライバの可視性を調べなさい。

解答例

▼データベースアクセス用クラスのソース

package com.techscore.jdbc.chapter5.exercise4;
/**
 * CheckFunctionDAO.java
 * TECHSCORE JDBC5章 実習課題4
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;

public class CheckFunctionDAO{
    private Connection conn = null;

    private Connection getConnection() throws SQLException,ClassNotFoundException{
        Class.forName("org.postgresql.Driver");
        conn = DriverManager.getConnection("jdbc:postgresql://dbserver:5432/Training"
                                           ,"postgres"  //ユーザ名
                                           ,"");        //パスワード
        conn.setAutoCommit(false);  //自動コミットモード解除
        return conn;
    }

    public boolean[][] isFunction() throws SQLException,ClassNotFoundException{
        boolean[][] result = new boolean[9][3];
        conn = getConnection();
        DatabaseMetaData metaData = conn.getMetaData();
        int type[] =
                { ResultSet.TYPE_FORWARD_ONLY,
                  ResultSet.TYPE_SCROLL_INSENSITIVE,
                  ResultSet.TYPE_SCROLL_SENSITIVE };
        boolean aaa = metaData.ownInsertsAreVisible(type[0]);
        for(int i=0; i < type.length; i++){
            result[0][i] = metaData.ownInsertsAreVisible(type[i]);
            result[1][i] = metaData.ownUpdatesAreVisible(type[i]);
            result[2][i] = metaData.ownDeletesAreVisible(type[i]);
            result[3][i] = metaData.othersInsertsAreVisible(type[i]);
            result[4][i] = metaData.othersUpdatesAreVisible(type[i]);
            result[5][i] = metaData.othersDeletesAreVisible(type[i]);
            result[6][i] = metaData.insertsAreDetected(type[i]);
            result[7][i] = metaData.updatesAreDetected(type[i]);
            result[8][i] = metaData.deletesAreDetected(type[i]);
        }
        finishTransaction();
        return result;
    }

    private void finishTransaction() throws SQLException{
        if (conn != null){
            conn.close();
        }
    }
}

▼Product(製品)情報管理クラスのソース

JDBC 1章 実習課題2を参照

▼テーブル表示ウィンドウ作成クラスのソース

package com.techscore.jdbc.chapter5.exercise4;
/**
 * DisplayCheckedResult.java
 * TECHSCORE JDBC5章 実習課題4
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */
import java.sql.SQLException;

public class DisplayCheckedResult{
    
    private static String[] type ={    "TYPE_FORWARD_ONLY      ",
                                       "TYPE_SCROLL_INSENSITIVE",
                                       "TYPE_SCROLL_SENSITIVE  "};
    private static String[] function ={"挿入された行を参照できるか      ",
                                       "変更された行を参照できるか      ",
                                       "削除された行が判別できるか      ",
                                       "他から挿入された行を参照できるか",
                                       "他から変更された行を参照できるか",
                                       "他から削除された行が判別できるか",
                                       "「rowInserted」メソッドで対象行 \nが挿入されたものである事を検出で\nきるか                                ",
                                       "「rowUpdated」メソッドで対象行に\n変更があったことを検出できるか  ",
                                       "「rowDeleted」メソッドで対象行が\n削除された事を検出できるか      "
                                       };
    
    private static void displayResult(boolean[][] result){
        System.out.println("\t\t\t\t\t"+ type[0] + "\t"+ type[1] + "\t"+ type[2]);
        System.out.println("=================================================================================================================");
        for(int i=0; i < function.length; i++){
            StringBuffer sb = new StringBuffer();
            for(int j=0; j < type.length; j++){
                if(j==0){
                    sb.append(function[i] + "\t");
                }
                if(result[i][j]){
                    sb.append("|○できる  \t\t");
                }else{
                    sb.append("|×できない\t\t");
                }
            }
            sb.append("\n=================================================================================================================");
            System.out.println(sb);
        }
    }

    public static void main(String[] args) {
        CheckFunctionDAO checkFunction = new CheckFunctionDAO();
        try{
            boolean[][] result = checkFunction.isFunction();
            displayResult(result);
        }catch(SQLException e){
            e.printStackTrace();
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}

▼データベースの指定

JDBC 1章 実習課題1を参照

▼実行結果例

==============
                                        TYPE_FORWARD_ONLY          TYPE_SCROLL_INSENSITIVE    TYPE_SCROLL_SENSITIVE
=================================================================================================================
挿入された行を参照できるか              |○できる                  |○できる                  |○できる
=================================================================================================================
変更された行を参照できるか              |○できる                  |○できる                  |○できる
=================================================================================================================
削除された行が判別できるか              |○できる                  |○できる                  |○できる
=================================================================================================================
他から挿入された行を参照できるか        |×できない                 |×できない                 |×できない
=================================================================================================================
他から変更された行を参照できるか        |×できない                 |×できない                 |×できない
=================================================================================================================
他から削除された行が判別できるか        |×できない                 |×できない                 |×できない
=================================================================================================================
「rowInserted」メソッドで対象行 
が挿入されたものである事を検出で
きるか                                  |×できない                 |×できない                 |×できない
=================================================================================================================
「rowUpdated」メソッドで対象行に
変更があったことを検出できるか          |×できない                 |×できない                 |×できない
=================================================================================================================
「rowDeleted」メソッドで対象行が
削除された事を検出できるか              |×できない                 |×できない                 |×できない
=================================================================================================================
==============

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp