日期:2014-05-16 浏览次数:20550 次
--模糊查询图书的存储过程
--判断,如果已经存在相同名称的存储过程就将其删除
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;
}