SqlHelper操作データベースツールクラス
SqlHelper操作データベースツールクラス
このツールクラスはSqlHelperのベースバージョンであり、クラス全体を静的クラスにすることで、高同時データベース操作に対応するのは難しいかもしれませんが、この問題は解決できます.SqlHelperオブジェクトを作成することで、メンバー変数、メンバーメソッドのstaticを削除し、取得接続という操作を分離してクラスを作成し、接続を取得するたびに、そのクラスのオブジェクトを取得します.これにより,同時の問題をある程度解決することができる.
プロパティファイルdbInfo.properties、Javaプロジェクトルートディレクトリの下に置く、srcディレクトリの下に置くにはクラスローダを使う
バージョン1.0 SqlHelper.java
次の機能があります.
callPro1(String sql, String[] parameters) 戻り値なしでストアド・プロシージャを呼び出す
callPro2(String sql, String[] inParameters,Integer[] outParameters) 戻り値のあるストアド・プロシージャの呼び出し
ResultSet executeQuery(String sql, String[] parameters) 簡単なSelect操作
ArrayList executeQuery2(String sql, String[] parameters) 二次パッケージのSelect操作、やや複雑
executeUpdate(String[] sql, String[][] parameters) トランザクションを考慮したupdate/delete/insert(DML)メソッド
executeUpdate(String sql, String[] parameters) 単一update/delete/insert(DML)メソッド
このツールクラスはSqlHelperのベースバージョンであり、クラス全体を静的クラスにすることで、高同時データベース操作に対応するのは難しいかもしれませんが、この問題は解決できます.SqlHelperオブジェクトを作成することで、メンバー変数、メンバーメソッドのstaticを削除し、取得接続という操作を分離してクラスを作成し、接続を取得するたびに、そのクラスのオブジェクトを取得します.これにより,同時の問題をある程度解決することができる.
プロパティファイルdbInfo.properties、Javaプロジェクトルートディレクトリの下に置く、srcディレクトリの下に置くにはクラスローダを使う
#oracle
url=jdbc:oracle:thin:@127.0.0.1:1521:SWITCH
user=scott
password=123456
driver=oracle.jdbc.driver.OracleDriver
バージョン1.0 SqlHelper.java
次の機能があります.
callPro1(String sql, String[] parameters) 戻り値なしでストアド・プロシージャを呼び出す
callPro2(String sql, String[] inParameters,Integer[] outParameters) 戻り値のあるストアド・プロシージャの呼び出し
ResultSet executeQuery(String sql, String[] parameters) 簡単なSelect操作
ArrayList executeQuery2(String sql, String[] parameters) 二次パッケージのSelect操作、やや複雑
executeUpdate(String[] sql, String[][] parameters) トランザクションを考慮したupdate/delete/insert(DML)メソッド
executeUpdate(String sql, String[] parameters) 単一update/delete/insert(DML)メソッド
package com.jdbc;
import java.sql.Statement;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;
/**
*
* @author Switch
* @function
*
*/
public class SqlHelper {
//
private static Connection ct = null;
private static PreparedStatement ps = null;
private static ResultSet rs = null;
private static CallableStatement cs = null;
//
private static String url = "";
private static String user = "";
private static String password = "";
private static String driver = "";
private static Properties pp = null;
private static FileInputStream fis = null;
//
static {
try {
// dbInfo.properties
pp = new Properties();
try {
fis = new FileInputStream("dbInfo.properties");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
pp.load(fis);
url = pp.getProperty("url");
user = pp.getProperty("user");
password = pp.getProperty("password");
driver = pp.getProperty("driver");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fis = null;
}
}
//
public static Connection getConnection() {
try {
ct = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ct;
}
// PreparedStatement
public static PreparedStatement getPreparedStatement() {
return ps;
}
// Connection
public static Connection getCt() {
return ct;
}
// PreparedStatement
public static PreparedStatement getPs() {
return ps;
}
// CallableStatement
public static CallableStatement getCs() {
return cs;
}
// ResultSet
public static ResultSet getRs() {
return rs;
}
// ,
// sql {call (?,?,?)}
public static void callPro1(String sql, String[] parameters) {
try {
ct = getConnection();
cs = ct.prepareCall(sql);
// ?
if (parameters != null && !parameters.equals("")) {
for (int i = 0; i < parameters.length; i++) {
cs.setObject(i + 1, parameters[i]);
}
}
cs.execute();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close(rs, cs, ct);
}
}
// ,
public static CallableStatement callPro2(String sql, String[] inParameters,
Integer[] outParameters) {
try {
ct = getConnection();
cs = ct.prepareCall(sql);
//
if (inParameters != null && !inParameters.equals("")) {
for (int i = 0; i < inParameters.length; i++) {
cs.setObject(i + 1, inParameters[i]);
}
}
//
if (outParameters != null) {
for (int i = 0; i < outParameters.length; i++) {
cs.registerOutParameter(inParameters.length + i + 1,
outParameters[i]);
}
}
cs.execute();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
}
return cs;
}
// select
public static ResultSet executeQuery(String sql, String[] parameters) {
try {
ct = getConnection();
ps = ct.prepareStatement(sql);
if (parameters != null && !parameters.equals("")) {
for (int i = 0; i < parameters.length; i++) {
ps.setString(i + 1, parameters[i]);
}
}
rs = ps.executeQuery();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
return rs;
}
// select 2( )---- : ,
public static ArrayList executeQuery2(String sql, String[] parameters) {
ArrayList result = null;
try {
ct = getConnection();
ps = ct.prepareStatement(sql);
if (parameters != null && !parameters.equals("")) {
for (int i = 0; i < parameters.length; i++) {
ps.setString(i + 1, parameters[i]);
}
}
rs = ps.executeQuery();
//
ResultSetMetaData resultSetMetaData = rs.getMetaData();
int column = resultSetMetaData.getColumnCount();
result = new ArrayList();
//
while (rs.next()) {
// ,
Object[] ob = new Object[column];
for (int i = 1; i <= column; i++) {
//
ob[i - 1] = rs.getObject(i);
}
result.add(ob);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
SqlHelper.close(rs, ps, ct);
}
return result;
}
// update/delete/insert(DML)
public static void executeUpdate(String[] sql, String[][] parameters) {
try {
//
ct = getConnection();
// false
ct.setAutoCommit(false);
// Serializable
ct.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
// SQL
for (int i = 0; i < sql.length; i++) {
if (parameters[i] != null && !parameters[i].equals("")) {
ps = ct.prepareStatement(sql[i]);
for (int j = 0; j < parameters[i].length; j++) {
// ?
ps.setString(j + 1, parameters[i][j]);
}
}
//
ps.executeUpdate();
}
//
ct.commit();
} catch (Exception e) {
// TODO: handle exception
//
try {
ct.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps, ct);
}
}
// update/delete/insert(DML)
public static void executeUpdate(String sql, String[] parameters) {
// ps
try {
ct = getConnection();
ps = ct.prepareStatement(sql);
if (parameters != null && !parameters.equals("")) {
// ?
for (int i = 0; i < parameters.length; i++) {
ps.setString(i + 1, parameters[i]);
}
}
//
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
//
e.printStackTrace();
// ,
//
throw new RuntimeException(e.getMessage());
} finally {
close(rs, ps, ct);
}
}
//
public static void close(ResultSet rs, Statement ps, Connection ct) {
//
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
rs = null;
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
ps = null;
}
if (ct != null) {
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
ct = null;
}
}
}