[Java:备忘录]连接Java与AccessMDB数据库

概述:
连接并获取数据从MDB的PG。
在继续与泛滥的MDB进行战斗时创建。

目的:
为了在业务中为个别PG组成使用时,偶尔会使用。
例如,通过批量启动进行数据转换或数据检查。

以下敘述假設在連接到MDB、獲取值後再返回給調用者。

如果你搜索一下,会更清楚易懂,但是对于我个人使用来说,这就足够了。
换句话说,这是我的备忘录。

根据来源:

/**
 * MdbSetuzoku.
 * SAMPLEMDBは各自で個別に設定してね.
 */
private StringBuffer MdbSetuzoku() {

    StringBuffer buf = new StringBuffer();

    try {
        // ドライバオブジェクトのロード
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

        // 日本語対応
        Properties prop = new java.util.Properties();
        prop.put("charSet", "SJIS");

        // データベースへの接続
        // DB名は直に書いているが、引数から渡してあげると良い
        Connection conn = DriverManager.getConnection("jdbc:odbc:SAMPLEMDB", prop);

        // ステートメントオブジェクトの生成
        Statement st = conn.createStatement();

        // クエリを実行してデータを抽出する.
        // GetDataSqlは個別に用意するSQL群。今回は省く。
        ResultSet res = st.executeQuery(GetDataSql().toString());

        // データ存在チェック
        // 普通はTrue/Falseだけど、当時は何故かこうなった
        Integer chkNum = 0;

        // ヘッダーの表示
        // 以下は別になくても良いです。
        buf.append("通番,ジョブID,ジョブ名称,ジョブステータス,開始時間\n");

        // 取得結果を編集
        // 取得結果が0件の場合はループしません。
        while (res.next()) {
            buf.append(res.getString(1) + "," + res.getString(2) + "\n");
            chkNum = 1;
        }

        // 出力対象データの存在有無を確認
        // ループ処理が発生しなかった場合はここで処理が終了します。
        // 作成当時は必要だと思い作成するも、今は他に手がなかったのかと思案。
        if (chkNum != 1) {
            return null;
        }

        // 接続解除
        conn.close();

    // 業務で使うなら、きちんとしたエラーハンドリングにしましょう。
    } catch (SQLException s) {
        System.out.println("SQL Error: " + s.toString() + " " + s.getErrorCode() + " " + s.getSQLState());
    } catch (Exception e) {
        // エラーメッセージのみ表示
        System.out.println(e.getMessage() + " States Check Error");
    }

    return buf;
}

备考:
System.out.println也可以使用System.err.println。
在上述程序中,所有的处理结果都被输出到文本中,因此使用System.out.println。
#我本来想为日志输出准备一个专门的类,但觉得太麻烦了。

另外,请确保正确地处理错误。

广告
将在 10 秒后关闭
bannerAds