jdbc 包含存儲過程的主要連接數據庫方法
package com.datainfo.utils;
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.datainfo.utils.log4j.LoggerMessage;
import com.mysql.jdbc.Connection;
public class BaseDAO {
private static final Logger log = Logger.getLogger(LoggerMessage.class);
private static String url = null;
private static String username = null;
private static String password = null;
private static String driver=null;
private static Properties props = new Properties();
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
private static final BaseDAO baseDao = new BaseDAO();
private static final int String = 0;
private CallableStatement call;
private BaseDAO() {
}
//單例模式
public static BaseDAO getInstance() {
return baseDao;
}
//初始化加載
static {
try {
props.load(BaseDAO.class.getClassLoader().getResourceAsStream("jdbc.properties"));
} catch (IOException e) {
log.info("加載jdbc.properties配置文件異常,請檢查!");
}
url =(props.getProperty("url"));
username = (props.getProperty("username"));
password = (props.getProperty("password"));
driver=(props.getProperty("driverClassName"));
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
log.info("加載數據庫驅動異常,請檢查!");
}
}
//打開數據庫連接
public Connection getConnection() {
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
System.out.println("加載驅動出現異常!");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//關閉數據庫連接
public void closeConnection(Connection conn) {
if (conn == null) return;
try {
if (!conn.isClosed()) {
//關閉數據庫連接
conn.close();
}
} catch (SQLException e) {
log.info("關閉數據庫連接發生異常,請檢查!");
}
}
//查詢
public ResultSet extuceQuery(String sql, Object[] values) {
conn = getConnection();
try {
pstmt = conn.prepareStatement(sql);
setValue(values);
rs = pstmt.executeQuery();
} catch (SQLException e) {
System.out.println("查詢數據出現異常!");
e.printStackTrace();
}
return rs;
}
//添加 修改 刪除
public boolean extuceUpdate(String sql, Object[] values) {
getConnection();
boolean b = false;
try {
//
pstmt = conn.prepareStatement(sql);
setValue(values);
int i = pstmt.executeUpdate();
if (i >= 1) {
b = true;
}
} catch (SQLException e) {
System.out.println("修改數據出現異常!");
e.printStackTrace();
}
return b;
}
//調用存儲過程的方法(無返回值)
public String callProcedure(String sql,Object[] values,int index){//index爲輸出參數的位置
getConnection();
String flag = null;
try {
call= conn.prepareCall(sql);
setValues(values);
call.registerOutParameter(index, String);
call.executeUpdate();
flag=call.getString(index);
System.out.println(call.toString());
} catch (SQLException e) {
e.printStackTrace();
}finally{
close();
}
return flag;
}
//關閉所有
public void close() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (call != null) {
try {
call.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if (conn != null && (!conn.isClosed())) {
conn.close();
}
} catch (SQLException e) {
}
}
}
//關閉所有
public void closeAll() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if (conn != null && (!conn.isClosed())) {
conn.close();
}
} catch (SQLException e) {
}
}
}
//爲佔位符賦值
public void setValue(Object[] values) {
if (values != null && values.length != 0)
for (int i = 0; i < values.length; i++) {
try {
pstmt.setObject(i + 1, values[i]);
} catch (SQLException e) {
System.out.println("爲佔位符賦值出現異常!");
e.printStackTrace();
}
}
}
//爲存儲過程中的佔位符賦值
public void setValues(Object[] values) {
if (values != null && values.length != 0)
for (int i = 0; i < values.length; i++) {
try {
call.setObject(i + 1, values[i]);
} catch (SQLException e) {
System.out.println("爲存儲過程的佔位符賦值出現異常!");
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String sql="call userDepositActive2(?,?,?,?)";
Object values[]={1,3,200};
System.out.println(getInstance().callProcedure(sql, values,4));
// String sql1="call userDepositActive1(?)";
//
// System.out.println(getInstance().callProcedure(sql1, null,1));
}
}
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.datainfo.utils.log4j.LoggerMessage;
import com.mysql.jdbc.Connection;
public class BaseDAO {
private static final Logger log = Logger.getLogger(LoggerMessage.class);
private static String url = null;
private static String username = null;
private static String password = null;
private static String driver=null;
private static Properties props = new Properties();
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
private static final BaseDAO baseDao = new BaseDAO();
private static final int String = 0;
private CallableStatement call;
private BaseDAO() {
}
//單例模式
public static BaseDAO getInstance() {
return baseDao;
}
//初始化加載
static {
try {
props.load(BaseDAO.class.getClassLoader().getResourceAsStream("jdbc.properties"));
} catch (IOException e) {
log.info("加載jdbc.properties配置文件異常,請檢查!");
}
url =(props.getProperty("url"));
username = (props.getProperty("username"));
password = (props.getProperty("password"));
driver=(props.getProperty("driverClassName"));
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
log.info("加載數據庫驅動異常,請檢查!");
}
}
//打開數據庫連接
public Connection getConnection() {
try {
Class.forName(driver);
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
System.out.println("加載驅動出現異常!");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//關閉數據庫連接
public void closeConnection(Connection conn) {
if (conn == null) return;
try {
if (!conn.isClosed()) {
//關閉數據庫連接
conn.close();
}
} catch (SQLException e) {
log.info("關閉數據庫連接發生異常,請檢查!");
}
}
//查詢
public ResultSet extuceQuery(String sql, Object[] values) {
conn = getConnection();
try {
pstmt = conn.prepareStatement(sql);
setValue(values);
rs = pstmt.executeQuery();
} catch (SQLException e) {
System.out.println("查詢數據出現異常!");
e.printStackTrace();
}
return rs;
}
//添加 修改 刪除
public boolean extuceUpdate(String sql, Object[] values) {
getConnection();
boolean b = false;
try {
//
pstmt = conn.prepareStatement(sql);
setValue(values);
int i = pstmt.executeUpdate();
if (i >= 1) {
b = true;
}
} catch (SQLException e) {
System.out.println("修改數據出現異常!");
e.printStackTrace();
}
return b;
}
//調用存儲過程的方法(無返回值)
public String callProcedure(String sql,Object[] values,int index){//index爲輸出參數的位置
getConnection();
String flag = null;
try {
call= conn.prepareCall(sql);
setValues(values);
call.registerOutParameter(index, String);
call.executeUpdate();
flag=call.getString(index);
System.out.println(call.toString());
} catch (SQLException e) {
e.printStackTrace();
}finally{
close();
}
return flag;
}
//關閉所有
public void close() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (call != null) {
try {
call.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if (conn != null && (!conn.isClosed())) {
conn.close();
}
} catch (SQLException e) {
}
}
}
//關閉所有
public void closeAll() {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if (conn != null && (!conn.isClosed())) {
conn.close();
}
} catch (SQLException e) {
}
}
}
//爲佔位符賦值
public void setValue(Object[] values) {
if (values != null && values.length != 0)
for (int i = 0; i < values.length; i++) {
try {
pstmt.setObject(i + 1, values[i]);
} catch (SQLException e) {
System.out.println("爲佔位符賦值出現異常!");
e.printStackTrace();
}
}
}
//爲存儲過程中的佔位符賦值
public void setValues(Object[] values) {
if (values != null && values.length != 0)
for (int i = 0; i < values.length; i++) {
try {
call.setObject(i + 1, values[i]);
} catch (SQLException e) {
System.out.println("爲存儲過程的佔位符賦值出現異常!");
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String sql="call userDepositActive2(?,?,?,?)";
Object values[]={1,3,200};
System.out.println(getInstance().callProcedure(sql, values,4));
// String sql1="call userDepositActive1(?)";
//
// System.out.println(getInstance().callProcedure(sql1, null,1));
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.