if (theClass.getName().equals("int")) {
value = new Integer(rs.getInt(props[i]));
} else if (theClass.getName().equals("long")) {
value = new Long(rs.getLong(props[i]));
} else if (theClass.getName().equals("boolean")) {
value = new Boolean(rs.getBoolean(props[i]));
} else if (theClass.getName().equals("float")) {
value = new Float(rs.getFloat(props[i]));
} else if (theClass.getName().equals("double")) {
value = new Double(rs.getDouble(props[i]));
} else if (Class.forName("java.lang.String").isAssignableFrom(theClass)) {
value = rs.getString(props[i]);
} else if (Class.forName("java.sql.Timestamp").isAssignableFrom(theClass)) {
value = rs.getTimestamp(props[i]);
} else if (Class.forName("java.sql.Date").isAssignableFrom(theClass)) {
value = rs.getDate(props[i]);
} else if (Class.forName("java.sql.Time").isAssignableFrom(theClass)) {
value = rs.getTime(props[i]);
} else if (Class.forName("java.util.Date").isAssignableFrom(theClass)) {
Timestamp t = rs.getTimestamp(props[i]);
if (t==null)
value = null;
else
value = new java.util.Date(t.getTime());
} else {
throw new Exception("un-supported class : " + theClass.getName());
}
} catch (Exception e) {
String msg = getClass().getName() + "::BaseDAO::readObjectFromResultSet - can not read property named [" + props[i] + "] - " + e.getMessage();
Debug.error(msg);
throw new SQLException(msg);
}
try {
if (value!=null) PropertyUtils.setProperty(obj, props[i], value);
} catch (Exception e) {
String msg = getClass().getName() + "::BaseDAO::readObjectFromResultSet - no property named [" + props[i] + "] in obj can be write";
Debug.error(msg);
throw new SQLException(msg);
}
}
}
if (conn == null) {
String msg = getClass().getName() + "::BaseDAO::openConnection() - can not get a connection.";
Debug.error(msg);
throw new SQLException(msg);
}
}
/** 关闭连接。如果启用了事务处理,关闭前默认调用 commit()。 */
protected void closeConnection() {
// 从 DAO 记录中去掉自己
synchronized (connectionLog) {
String daoID = toString();
if (connectionLog.contains(daoID)) {
connectionLog.remove(connectionLog.indexOf(daoID));
} else {
Debug.debug("!!!! connectionLog does not contains " + daoID + " when closeConnection() !!!!");
}
}
try {
if (conn != null) {
// 若 closeConnection() 被主动调用,则先完成 Commit 操作
if (!conn.getAutoCommit()) conn.commit();