请教道友:Statement可否集成到连接池中?

开始在连接池管理类中定义了一个Statement属性,使用他来执行查询,结果发现如果查询方法不同步,则多个用户并发访问时,程序中又包含对结果集的操作,就会导致偶尔的取不到结果集,如果要求开发人员传入一个Connection自己创建一个Statement的话,关闭这个Statement就成了问题,请教各位道友各抒己见给个看法,本人刚学java,不知道这个想法是不是很可笑,谢谢了先

如果同步这个方法肯定会大大影响性能,而不同步的话,现在的Singleton模式连接池管理类肯定会导致查询受阻,但是好像更新不太受影响,因为更新我们可以要求程序员传当前连接进来,自己生成Statement对象,完后关闭他.这个问题的需求是:希望程序员可以不用生成Statement,直接执行SQL语句.



public ResultSet executeQuery(String querySQL, Connection con) throws SQLException
{
Connection conn = (Connection)con;
Statement st = conn.createStatement();
ResultSet rs = null;
try
{
rs = st.executeQuery(querySQL);
ResultSetAdapter rsAdapter = new ResultSetAdapter(rs);
ResultSetAdapter rsAdapterReturn = rsAdapter;
loghelper.info("executeQuery", "end");
return rsAdapterReturn;
}
catch (SQLException ex)
{
while(ex != null)
{
if (ex.getSQLState() !=null && ex.getSQLState().equals(
"40001"))
{
System.out.println(
"deadlock occur.");
}else if(ex.getSQLState() !=null && (ex.getSQLState().equals(
"40XL1") || ex.getSQLState().equals("40XL2")))
{
System.out.println(
"lockwait timeout.");
}
ex.printStackTrace();
ex = ex.getNextException();
}
loghelper.info(
"executeQuery", "end");
return null;
}
finally
{
// st.close();
}

}


public ResultSet executeQuery(String querySQL, Connection con) throws SQLException
{
Connection conn = (Connection)con;
Statement st = conn.createStatement();
ResultSet rs = null;
try
{
rs = st.executeQuery(querySQL);
return rs;
}
catch (SQLException ex)
{
while(ex != null)
{
ex.printStackTrace();
ex = ex.getNextException();
}
return null;
}
finally
{
// here I can't use close() method
// st.close();
}

}