⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datareader.java

📁 一个Java持久层类库
💻 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 + -