连接池

来源:互联网 发布:杭州阿里巴巴淘宝城 编辑:程序博客网 时间: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() {       
    }
}



调用时使用:

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); } }