每次插入之前,查询一下,主键是否重复,外键是否存在,调用如下方法,连接都关闭了为什么数据库中还显示连接着publicListexecSqlQuery(Stringsql,Object...objects)throwsOPExceptio...
每次插入之前,查询一下,主键是否重复,外键是否存在,调用如下方法,连接都关闭了为什么数据库中还显示连接着
public List execSqlQuery(String sql, Object... objects) throws OPException {
Connection conn = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
List list = new ArrayList();
try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
int i = 0;
for (Object object : objects) {
if (object != null && object instanceof Date) {
object=new java.sql.Date(((Date)object).getTime());
}
pstmt.setObject(++i, object);
}
rs = pstmt.executeQuery();
ResultSetMetaData resultMetaData = rs.getMetaData();
int fieldCount = resultMetaData.getColumnCount();
while (rs.next()) {
if (fieldCount == 1) {
list.add(rs.getObject(1));
} else {
List l = new ArrayList();
for (int j = 1; j <= fieldCount; j++) {
l.add(rs.getObject(j));
}
list.add(l.toArray());
l = null;
}
}
} catch (Exception e) {
throw OPUtil.handleException(e);
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
}
}
return list;
}
public Connection getConnection() throws OPException {
return getSession().connection();
}
展开