【发布时间】:2016-05-03 15:55:29
【问题描述】:
我在执行 sql 语句时得到以下 execption
SQLServerException:服务器无法恢复事务。 描述:69d00000016。
我知道下面的 DAO 实现是不正确的。我想知道以下代码的正确实现是什么,以及我的 connFactory 被声明为 static 的事实是否会导致上述错误。
private static DbConnectionFactory connFactory;
protected myDAO() {
myDAO.connFactory = DbConnectionFactoryHome.getHome().lookupFactory("facName");
}
public myReturn myAccessMethod(final int cod) throws BaseException {
Connection conn = null;
CallableStatement stmt = null;
ResultSet resSet = null;
myReturn ret= null;
try {
conn = myDAO.connFactory.getConnection();
stmt = conn.prepareCall("{call name (2)}");
stmt.setInt(1, cod);
resSet = stmt.executeQuery();
if (resSet.next()) {
ret = new myReturn(resSet.getInt("someValue"));
}
}
catch (SQLException sqle) {
throw new myException(sqle.getMessage(), (Throwable)sqle);
}
finally {
try {
if (resSet != null) {
resSet.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
}
return ret;
}
我应该从 connFactory 中删除 static 修饰符还是实现一个单例,这样当再次调用构造函数时工厂不会重新创建?
【问题讨论】:
标签: java singleton database-connection factory dao