[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。
#我本来想为日志输出准备一个专门的类,但觉得太麻烦了。
另外,请确保正确地处理错误。