package Util;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
/**
* 数据库连接
* @author 吕贤丰
*
*/
public class DBUtil {
private static Connection con ;
private static PreparedStatement pstmt;
private static CallableStatement cstmt;
private static ResultSet rs;
/**
* 数据库连接
* @return Connection
*/
public static Connection getConnection(){
try {
Context context =(Context)new InitialContext();
DataSource dataSource =(DataSource)context.lookup("java:comp/env/stus");
con = dataSource.getConnection();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
/**
* 数据处理(非事物)
* @param sql
* @return pstmt
*/
public static PreparedStatement getPstmt(String sql){
try {
if(con == null || con.isClosed()){
getConnection();
}
pstmt = con.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pstmt;
}
/**
* 数据处理(存储过程)
* @param sql
* @return
*/
public static CallableStatement getCstmt(String sql){
try {
if(con == null || con.isClosed()){
getConnection();
}
cstmt = con.prepareCall(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return cstmt;
}
/**
* 修改、删除、添加
* @return num(执行影响的行数)
*/
public static int update(){
int num = 0;
try {
num = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return num;
}
/**
* 数据查询(SQL)
* @return rs(结果集)
*/
public static ResultSet query() {
try {
rs = pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
/**
* 存储过程执行
*
*/
public static boolean execute() {
try {
cstmt.execute();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
/**
* 数据库关闭操作
*/
public static void close(){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}else if(cstmt!=null){
try {
cstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}else if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}else if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}