学了JDBC之后,就听说有数据库连接池这个概念,现在已经工作了,但从来没有写过数据库连接池这些东西,说起来有点惭愧啊。
小弟在此跪求连接池的接口,以及实现类 50分奉上,分不多,请各位帮忙
小弟在此跪求连接池的接口,以及实现类 50分奉上,分不多,请各位帮忙
解决方案 »
- HIbernate 4.1.8版本的源代码哪里能下载到
- 数据库重启后、长时间不操作 连接无效就会报这个错session由spring管理
- java操纵硬件的copy文件的小问题??
- 为什么用javamail向163发送邮件,每封信都带有一个附件的符号???
- tomcat 问题,在线等解决就给分?
- GlassFish 容器能同时发布两个EJB project 吗?
- 用socket传输较大的文件,为甚老是失败?我还要问一些socket通信的初级问题
- jsp连接mysql的问题好像是jdbc driver的问题,求教!
- 编译CMP模式EJB时出错,请高手指教
- 请问:为了负载平衡,怎样将bean发布到多台机器上的j2ee服务器上。
- SSH框架getHibernateTemplate().find()报异常。
- 跪求小女子急急急急急急急急急急急急急急急急急,MAXIMO 开发中文文档,在线等。。。。。[
try {
Context ctx = new InitialContext();
dataSource = (DataSource) ctx
.lookup("java:comp/env/java/dataSource");
} catch (NamingException e) {
System.err.println("%%%% Error Creating data source %%%%");
e.printStackTrace();
}
}
private static DataSource ds = null;
static{
try {
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/java/dataSource");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private CtrlConnection() {
} public static Connection getConnection() throws SQLException {
Connection connection = (Connection) threadLocal.get(); if (connection == null || connection.isClosed()) {
if (dataSource == null) {
rebuildDataSource();
}
if (dataSource == null) {
// do something else
} else {
connection = dataSource.getConnection();
if (connection.getAutoCommit())
connection.setAutoCommit(false);
}
threadLocal.set(connection);
} return connection;
} public static void rebuildDataSource() {
try {
Context ctx = new InitialContext();
dataSource = (DataSource) ctx
.lookup("java:comp/env/java/dataSource");
} catch (NamingException e) {
System.err.println("%%%% Error Creating data source %%%%");
e.printStackTrace();
}
} public static void closeConnection() throws SQLException {
Connection connection = (Connection) threadLocal.get();
threadLocal.set(null); if (connection != null) {
connection.close();
}
}
TestDao: //查询方法
public Result doQuery(String sql, List params) throws SQLException {
Connection conn = CtrlConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql); if (!(params == null || params.size() == 0)) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
} rs = pstmt.executeQuery();
// ResultSetMetaData rsmd = rs.getMetaData();
return ResultSupport.toResult(rs);
} catch (SQLException e) {
e.printStackTrace();
throw e;
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//增删改方法
public void doUpdate(String sql, List params) throws SQLException {
Connection conn = CtrlConnection.getConnection();
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql); if (!(params == null || params.size() == 0)) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(i + 1, params.get(i));
}
} pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw e;
} finally {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
[b]遍历Result:[/b]public void show() {
String sql = "select...";
Connection conn = null;
// TestDao dao = new TestDao(conn);
TestDao dao = new TestDao(); try { Result result = dao.doQuery(sql, null); Object[][] table1 = result.getRowsByIndex();
for (Object[] row : table1) {
// row[0];
for (Object col : row) { }
} SortedMap[] table2 = result.getRows();
for (SortedMap row : table2) {
row.get("id");
row.get("name");
} conn.commit();
} catch (Exception e) {
// TODO: handle exception
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} finally {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
你可以把三楼Dao抽象成一个借口
Context ctx = new InitialContext();
dataSource = (DataSource) ctx
.lookup("java:comp/env/java/dataSource");
方式调用就行,干吗非得自己写个。怎么写啊,我还不会,楼主写好了发出来瞧瞧哈。