public List SelectaFriendlist(final int uid,final String tag,final String tname, final int beginPage,final int endPage){
List list=(List) this.getJdbcTemplate().execute(

new ConnectionCallback(){
public Object doInConnection(Connection connectoin)
throws SQLException, DataAccessException {

connectoin.setAutoCommit(true);
CallableStatement cstmt = connectoin.prepareCall("{call sel_bfriend(?,?,?,?,?)}");

cstmt.setInt(1, uid);
//System.out.println("aaaaaaaaaaaaaaaaaaaaaaaa");
//System.out.println(tag);
cstmt.setString(2, tag);
//System.out.println("11111111111111111111");
//System.out.println(tname);
cstmt.setString(3, tname);
//System.out.println(beginPage);
//System.out.println(endPage);
    cstmt.setInt(4, beginPage);
cstmt.setInt(5, endPage);
ResultSet rs = cstmt.executeQuery();

return new ResultSetUtil().ResultSetForList(rs);
  }
  }
);

return list;



}
这是我写的dao
从数据库读反不出值呀,在数据库运行,没问题有值, 也不报错,特郁闷,希望有人能帮解答一下谢谢

解决方案 »

  1.   

    在ResultSet rs = cstmt.executeQuery(); 后面加一句打印看看执行到没有. 
    在你的ResultSetUtil().ResultSetForList(rs); 中也打印一些信息看是否处理ResultSet了. 
      

  2.   

    我感觉你这句有问题:
    CallableStatement cstmt = connectoin.prepareCall("{call sel_bfriend(?,?,?,?,?)}");
    CallableStatemen 是接口  
    CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法。
    已储存过程储存在数据库中。对已储存过程的调用是 CallableStatement对象所含的内容。这种调用是用一种换码语法来写的,有两种形式:一种形式带结果参数,另一种形式不带结果参数。结果参数是一种输出 (OUT) 参数,是已储存过程的返回值。两种形式都可带有数量可变的输入(IN 参数)、输出(OUT 参数)或输入和输出(INOUT 参数)的参数。问号将用作参数的占位符。创建 CallableStatement 对象的人应当知道所用的 DBMS 是支持已储存过程的