日期:2014-05-20  浏览次数:20834 次

preparedStatement 封装
如题

public ResultSet PreparedStatement(Stirng sql,PreparedStatement[] preparedStatement)
{
//这里怎么写?


}


preparedStatement 数量不确定,代码怎样写才简洁呢?



------解决方案--------------------
用不確定來應對不確定
for,while等
------解决方案--------------------
Java code

private Connection conn;
    private PreparedStatement pstm;
    private ResultSet rs;
    public boolean update(User u){
        boolean result=false;
        conn=DBUtil.getConnection();
        String sql="update users set uname=?,password=?,score=? where id=?";
        try {
            pstm=conn.prepareStatement(sql);
            pstm.setString(1,u.getUname());
            pstm.setString(2,u.getPassword());
            pstm.setInt(3,u.getScore());
            pstm.setInt(4,u.getId());
            if(pstm.executeUpdate()>0){
                result=true;
            }                
            if(pstm!=null)
                pstm.close();
            if(conn!=null)
                DBUtil.close(conn);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }

------解决方案--------------------
你是不是要模仿.net里面的adapter呀,如果那样的话,这条sql应该代指查询用sql文,这个PreparedStatement应该是4个(增删改查)的集合吧
------解决方案--------------------
可变参数,
public ResultSet PreparedStatement(Stirng sql,Object... params)
{
//to do something
}
参看下面这个例子,每次直接调用就行了
Java code
public static ResultSet executeQuery(Connection conn , String sql , Object... params){
        ResultSet res = null ;
        try {
            PreparedStatement pst = conn.prepareStatement(sql);
            for(int i = 0; i<params.length; i++){
                pst.setObject(i+1, params[i]);
            }
            res = pst.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return res;
    }

------解决方案--------------------
preparedStatement不是可以获取length么?还是不太清楚你想干嘛。