日期:2014-05-16  浏览次数:20519 次

sqlhelper.executereader返回1NaN
--模糊查询图书的存储过程

--判断,如果已经存在相同名称的存储过程就将其删除
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE NAME = 'per_get')
DROP PROCEDURE per_get
GO

CREATE PROCEDURE per_get --创建存储过程
@BOOKNAME VARCHAR(20), --声明变量,图书名称
@TYPENAME VARCHAR(20), --声明变量,阅读者姓名
@AUTHOR VARCHAR(10), --声明变量,作者
@PRESS VARCHAR(10) --声明变量,出版社
AS
DECLARE @SQL VARCHAR(1000) --声明变量,储存数据库语句
--初始化数据粗语句
SET @SQL = 'SELECT BOOKNAME,TYPENAME,AUTHOR,PRESS FROM books WHERE 1=1'
--根据书名模糊查询
if(@BOOKNAME<>'')
BEGIN
SET @SQL=@SQL+'AND BOOKNAME LIKE'+'''%'+@BOOKNAME+'%'''
END
--根据类型名模糊查询
if(@TYPENAME<>'')
BEGIN
SET @SQL=@SQL+'AND TYPENAME LIKE'+'''%'+@TYPENAME+'%'''
END

--根据作者模糊查询
if(@AUTHOR<>'')
BEGIN
SET @SQL=@SQL+'AND AUTHOR LIKE'+'''%'+@AUTHOR+'%'''
END

--根据出版社模糊查询
if(@PRESS<>'')
BEGIN
SET @SQL=@SQL+'AND PRESS LIKE'+'''%'+@PRESS+'%'''
END

SELECT @SQL AS 'T-SQL语句' --查询使用的SQL语句
EXECUTE(@SQL) --运行SQL语句
GO




public string book_get(string str)
    {
        SqlParameter[] asp = new SqlParameter[4];
        asp[0] = new SqlParameter("@bookname", str);
        asp[0].Direction = ParameterDirection.Input;
        asp[1] = new SqlParameter("@typename", "");
        asp[1].Direction = ParameterDirection.Input;
        asp[2] = new SqlParameter("@author", "");
        asp[2].Direction = ParameterDirection.Input;
        asp[3] = new SqlParameter("@press", "");
        asp[3].Direction = ParameterDirection.Input;

        SqlDataReader dr= SqlHelper.ExecuteReader
            (
                connectionString,
                CommandType.StoredProcedure,
                "per_get",
                asp
            );
        string ner="";
        while (dr.Read())
        {
            str += dr[0].ToString() + "<br />";
        }
        return str;
    }


当我传入1的时候,返回的是1NaN
为什么啊?
------解决方案--------------------