public static ArrayList<Accounts> getAccounts(String sql, Connection con) {
        // sql = "SELECT ID,NUMBER,NAME FROM ACCOUNT";
        // sql = "SELECT * FROM ACCOUNT";        ArrayList<Accounts> aList = new ArrayList<Accounts>();
        ResultSet rs = null;
        try {
            rs = con.prepareStatement(sql).executeQuery();
            while (rs.next()) {
                Accounts a = new Accounts();
                a.setId(rs.getInt("ID"));
                a.setNumber(rs.getString("NUMBER"));
                a.setName(rs.getString("NAME"));
                try{
                    a.setFCA(rs.getString("FCA"));
                }catch(Exception e){
                    a.setFCA(null);
                }
                try{
                    a.setSign(rs.getBoolean("SIGN"));
                }catch(Exception e){
                    a.setSign(false);
                }
                try{
                    a.setCashFlow(rs.getBoolean("CASHFLOW"));
                }catch(Exception e){
                    a.setCashFlow(false);
                }
                try{
                    a.setBal(rs.getBoolean("BAL"));
                }catch(Exception e){
                    a.setBal(false);
                }
                aList.add(a);
            }
        } catch (SQLException ex) {
            Logger.getLogger(Accounts.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException ex) {
                    Logger.getLogger(Accounts.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }        return aList;
    }
以上的方法我想让我的所有查询该表的语句都能使用(无论多少列,只要是查询“ACCOUNT”表),比如“SELECT * FROM ACCOUNT”和“SELECT ID,NUMBER FROM ACCOUNT”都可以使用,
我上面的方法可以达到这样的效果,但是我同事说不能这么写,不知道为什么,如果真的不能这么写,那应该怎么写,请结合我的代码给个例子,谢谢

解决方案 »

  1.   

    你的表结构和Account类结构是怎么样的?还有,你同事为什么说不能这么写
      

  2.   

    他说思想有问题:
    表结构:
    CREATE TABLE ofas_accounts (  ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  NUMBER VARCHAR(30)  NOT NULL,  NAME VARCHAR(32)  NOT NULL,  FCA TEXT ,  SIGN BOOLEAN  NOT NULL DEFAULT false,  CASHFLOW BOOLEAN  NOT NULL DEFAULT false,  BAL BOOLEAN  NOT NULL DEFAULT false,  PRIMARY KEY (ID))ENGINE = InnoDB;
    类结构:
    字段和表结构的字段一样,之是大小写不同