ResultSet的不明确行为

时间:2017-11-24 13:24:19

标签: java resultset

我需要创建单独的POJO,它将设置/获取sql ResultSet并在我的项目代码中使用它的方法,如下所示。我创建了以下2个类

    public class Tester3 
{

    public MyResultSet test() throws SQLException{
        MyResultSet mrs = new MyResultSet();
         PreparedStatement ps = null;
         String values = null;
         boolean flag = false;

         String one = "'12'";
         String two = "'jt'";
         String a = null;
         String b = null;

        try {
             if(flag==true)
             {
                values = "'3%'";
                a =null;
                b = "OR id IN(\'" +a+ "\')";
             }else
             {  
                values = "'%'";
                a = one + "," + two; 
                b = "AND id IN("+a+")";
             }

            String sql = "SELECT * FROM veracodetable where orts like PARAM RAMAN";

            sql = sql.replaceFirst("PARAM", values);
            sql = sql.replaceFirst("RAMAN", b);

            System.out.println("SQL: "+sql);

            ps = new Connection1().getConnection().prepareStatement(sql);
            ps.executeQuery();
            mrs.setRs(ps.executeQuery());

            System.out.println("ResultSet: "+mrs.getRs().next());

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return mrs;
    }


    public static void main(String[] args) throws SQLException {
        Tester3 t = new Tester3();
        MyResultSet rs = t.test();
        System.out.println("ResultSet: "+rs.getRs().next());
    }
}



 public class MyResultSet {

        ResultSet rs = null;

        public ResultSet getRs() {
            return rs;
        }
    public void setRs(ResultSet rs) {
        this.rs = rs;
    }
}

当使用单独的POJO MyResultSet 执行上面的代码时,我在ResultSet中没有得到任何结果。但是,如果我跳过POJO实现并直接使用resultSet,我就能得到结果。

rs.getRs()完全是在调用吗?如果没有,为什么?

1 个答案:

答案 0 :(得分:-1)

I would separate the statements as they dont't perform the same function, and then populate;

PreparedStatemet ps = null;
ResultSet rs = null;
if(flag){
    String stmt = "...?...?";
    ps = con.preparedStatement(stmt);
    ps.setString(0,a);
    ps.setString(1,b);
    rs = ps.executeQuery;
 }else{
    String stmt = "...?...?";
    ps = con.preparedStatement(stmt);
    ps.setString(0,a);
    ps.setString(1,b);
    rs = ps.executeQuery;
 }
}