连接池
来源:互联网 发布:杭州阿里巴巴淘宝城 编辑:程序博客网 时间:2024/04/27 22:18
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;import javax.sql.DataSource;
public class ConnectionFactory {
private static DataSource ds = null;
private ConnectionFactory() {
}
static {
try {
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource)ctx.lookup("jdbc/main");
}catch(NamingException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcUtil {
public static void close(ResultSet rs, Statement st, Connection con) {
close(rs);
close(st);
close(con);
}
public static void close(ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* PreparedStatement, CallableStatement 都是 Statement 的子类,可以共用这个方法
* @param st
*/
public static void close(Statement st) {
if(st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection con) {
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private JdbcUtil() {
}
}
调用时使用:
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;import javax.sql.DataSource;
public class ConnectionFactory {
private static DataSource ds = null;
private ConnectionFactory() {
}
static {
try {
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource)ctx.lookup("jdbc/main");
}catch(NamingException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcUtil {
public static void close(ResultSet rs, Statement st, Connection con) {
close(rs);
close(st);
close(con);
}
public static void close(ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* PreparedStatement, CallableStatement 都是 Statement 的子类,可以共用这个方法
* @param st
*/
public static void close(Statement st) {
if(st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection con) {
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private JdbcUtil() {
}
}
调用时使用:
- Java code
- public void updateBid(float topPrice, int aucIsSell, String aucId, String buyerId) { Connection con = null; PreparedStatement ps = null; try { String sql = "UPDATE 某表 SET PriceNum = PriceNum + 1, " + "TopPrice = ?, AucIsSell = ?, TopUserId = ? " + "WHERE Id = ?"; con = ConnectionFactory.getConnection(); ps = con.prepareStatement(sql); ps.setFloat(1, topPrice); ps.setInt(2, aucIsSell); ps.setString(3, buyerId); ps.setString(4, aucId); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtil.close(null, ps, con); // 或者使用: // JdbcUtil.close(ps); // JdbcUtil.close(con); } }