📄 datareader.java
字号:
package ActiveObject.core;import ActiveObject.vo.TableType;import ActiveObject.exception.*;import java.sql.*;import java.util.*;/** * @author tanjiazhang */public class DataReader { private Connection connection = null; private PreparedStatement preparedStatement = null;// private Class objectType = null; List<TableType> tables = null; private ResultSet resultSet = null; DataReader (Connection connection, PreparedStatement pStmt, List<TableType> tables) throws java.sql.SQLException { this.connection = connection;//传入该参数是为了让它可在Reader内关闭 this.preparedStatement = pStmt;// this.objectType = objectType; this.tables = tables; this.resultSet = pStmt.executeQuery(); } private DataReader () { } /** * 尝试读一行记录,只有返回值为真时,才允许取出该对象 * @throws java.sql.SQLException */ public boolean read () throws java.sql.SQLException { return this.resultSet.next(); } /** * 执行read()操作后,从DataReader中读出该对象 * @throws java.sql.SQLException * @throws java.lang.IllegalAccessException 以下异常可能由于内部机制的实现问题而产生 */ public Object getObject () throws ObjectAnalysisException, SQLException{ Object value = null; if(tables.size() > 1) { int tableCount = tables.size(); Class[] objectTypes = new Class[tableCount]; Map<String,String> tableName = new HashMap(); for(int i=0;i<tableCount;i++) { TableType table = tables.get(i); objectTypes[i] = table.getObjectType(); tableName.put(table.getObjectType().getSimpleName(), table.getNickName()); } ActiveRecord[] objects = new ActiveRecord[tableCount]; try { for(int j=0;j<tableCount;j++) objects[j] = (ActiveRecord)objectTypes[j].newInstance(); } catch(IllegalAccessException err) { throw new ObjectAnalysisException(err.toString(), err); } catch(InstantiationException err) { throw new ObjectAnalysisException(err.toString(), err); } value = ActiveRecordHelper.setupObjectByResultSet(objects, resultSet, tableName);// value = ActiveRecordHelper.setupObject(objects, tableName, this.resultSet); } else { Class<ActiveRecord> object = this.tables.get(0).getObjectType(); try { value = ActiveRecordHelper.setupObjectByResultSet(object.newInstance(), resultSet);// value = ActiveRecordHelper.setupObject(object.newInstance(),this.resultSet); } catch(IllegalAccessException err) { throw new ObjectAnalysisException(err.toString(), err); } catch(InstantiationException err) { throw new ObjectAnalysisException(err.toString(), err); } } return value;// ActiveRecord record = null;// try// {// record = ActiveRecord.setupObject((ActiveRecord)objectType.newInstance(), this.resultSet);// record.isActive = true;// }// catch(ObjectAnalysisException err)// {// throw err;// }// catch(SQLException err)// {// throw err;// }// catch(Exception err)// {}// return record; } /** * 使用DataReader完毕后必须执行close释放资源 * @throws java.sql.SQLException */ public void close () throws java.sql.SQLException { this.resultSet.close(); this.preparedStatement.close(); this.connection.close(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -