在网上下的strut1.2的图书馆系统源码,在这里出错了,返回的结果集为空,看半天不懂
public ArrayList getBooksList(int count, int page, String sqlstr) {
        ArrayList list = new ArrayList();
        try {
            proc = conn.prepareCall("{call BooksPage (?,?,?,?)}");
            proc.setInt(1, page);
            proc.setInt(2, count);
            proc.setString(3, sqlstr);
            proc.registerOutParameter(4, Types.INTEGER);
            res = proc.executeQuery();
            while (res.next()) {
                BooksBean bsb = new BooksBean();
                bsb.setBooks_Amount(res.getInt("Books_Amount"));
                bsb.setBooks_Company(res.getString("Books_Company"));
                bsb.setBooks_Count(res.getInt("Books_Count"));
                bsb.setBooks_ID(res.getInt("Books_ID"));
                bsb.setBooks_Name(res.getString("Books_Name"));
                bsb.setBooks_Time(res.getString("Books_Time"));
                bsb.setBookType_ID(res.getInt("BookType_ID"));
                list.add(bsb);
            }
            pagecount = proc.getInt(4);
        } catch (SQLException ex) {
            System.out.println("服务器异常发生在 getBooksList()");
            ex.printStackTrace();
        }
        return list;
    }
请大家赐教。

解决方案 »

  1.   

    这个我还真不知道存储过程在哪里,网上找得源码,导入的mdf ldf文件,好像还一个data文件没什么用
      

  2.   

    sql server数据库吧?打开数据库,展开相应的数据库,有个可编程性,再展开,就能看到存储过程了。
      

  3.   

    call BooksPage (?,?,?,?)}这个sql贴出来啊
      

  4.   

    是这个么?我贴出Bookspage的好了USE [Book]
    GO
    /****** Object:  StoredProcedure [dbo].[BooksPage]    Script Date: 01/17/2012 08:22:01 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER procedure [dbo].[BooksPage]
    @curPage int=1,
    @perPageRecords int,
    @sqlstr varchar(255),
    @countpage int output
    as
    declare @total_count int
    if exists (select 1 from  sysobjects where  id = object_id('total_count') and   type = 'U') drop table total_count
    create table total_count(toll int)
    execute( 'insert into total_count select  count(*) from Books ' + @sqlstr)
    select @total_count = toll from total_count
    drop table total_count
    declare @page_in_show int
    set @page_in_show=@total_count-(@curPage-1)*@perPageRecords
    set @countpage=(@total_count+@perPageRecords -1)/@perPageRecords 
    exec('select top '+@perPageRecords+' * from (select top '+@page_in_show+' * from Books '+@sqlstr+' order by Books_ID desc) as a order by Books_ID asc')
      

  5.   

    if exists (select 1 from  sysobjects where  id = object_id('total_count') and   type = 'U') drop table total_count  
    ---找到用户创建的表'total_count' ,如果存在了就删除掉,然后在创建一个 'total_count' ;
    create table total_count(toll int)
    execute( 'insert into total_count select  count(*) from Books ' + @sqlstr)
    ---把查询出来的数据插入到'total_count' 表
    select @total_count = toll from total_count--查询出数据赋值给@total_count变量,然后把表'total_count'删除掉
    drop table total_count
    declare @page_in_show int
    set @page_in_show=@total_count-(@curPage-1)*@perPageRecords
    set @countpage=(@total_count+@perPageRecords -1)/@perPageRecords 
    exec('select top '+@perPageRecords+' * from (select top '+@page_in_show+' * from Books '+@sqlstr+' order by Books_ID desc) as a order by Books_ID asc')你可以在查询分析器中执行 call BooksPage (?,?,?,?) 问号用你的实际输入代替 ,执行一下就知道结果了 ;
    4个问号的值分别赋值给 @curPage int=1,
    @perPageRecords int,
    @sqlstr varchar(255),
    @countpage int output
    这4个变量 ;
      

  6.   

    你可以在查询分析器中执行 execute BooksPage (?,?,?,?)  问号用你的实际输入代替 ,执行一下就知道结果了 ;
    4个问号的值分别赋值给 @curPage int=1,
    @perPageRecords int,
    @sqlstr varchar(255),
    @countpage int output
    这4个变量 ;