结果集的模棱两可的行为



我需要创建单独的pojo,该POJO将设置/获取SQL Resultset并在整个项目代码中使用其方法如下。我创建了下面的两个类

    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()完全调用吗?如果没有,为什么?

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;
 }
}

相关内容

  • 没有找到相关文章

最新更新