小弟在写一个商品查询,用的是AspNetPager分页控件。但是查询不到结果,提示是“并非所有的代码路径都返回值”
Web层:
keyword是从首页的一个textbox 里面取出的:
string str = txtSearch.Text.Trim();
Response.Redirect("Search.aspx?keyword=" + str);
然后查询页面:
protected void getSearchList()
{
str = Request.QueryString["keyword"];
DataList1.DataSource = goodsInfoManage.getKeyword(AspNetPager1.CurrentPageIndex, AspNetPager1.PageSize, str);
DataList1.DataBind(); }
DAL层:
public List<GoodsInfo> getKeyword(int pageIndex, int pageSize, string keyword)
{
SqlParameter[] sqlParameters = {
new SqlParameter("@pageIndex",SqlDbType.Int),
new SqlParameter("@pageSize",SqlDbType.Int),
new SqlParameter("@Keyword",SqlDbType.VarChar)
};
sqlParameters[0].Value = pageIndex;
sqlParameters[1].Value = pageSize;
sqlParameters[2].Value = keyword;
List<GoodsInfo> list = new List<GoodsInfo>();
SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.StoredProcedure, "User_Search", sqlParameters);
while (reader.Read())
{
GoodsInfo gi = new GoodsInfo();
gi.GoodsID = int.Parse(reader["GoodsID"].ToString());
gi.GoodsName = reader["GoodsName"].ToString();
gi.MarketPrice = decimal.Parse(reader["MarketPrice"].ToString());
gi.MemberPrice = decimal.Parse(reader["MemberPrice"].ToString());
gi.GoodsPic_s = reader["GoodsPic_s"].ToString();
gi.GoodsSDesc = reader["GoodsSDesc"].ToString();
gi.Keyword = reader["Keyword"].ToString();
list.Add(gi);
}
reader.Dispose();
return list;
}
存储过程:
CREATE procedure User_Search
(@pagesize int,
@pageindex int,
@Keyword varchar(60))
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select GoodsID from tb_GoodsInfo where GoodsName like '%@keyword%' or Keyword like '%@keyword%' order by GoodsID desc
select O.GoodsID,O.GoodsName,O.MarketPrice,O.MemberPrice,O.GoodsPic_s,O.GoodsSDesc,O.Keyword from tb_GoodsInfo O,@indextable t where O.GoodsID=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound and O.GoodsName like '%@keyword%' or O.Keyword like '%@keyword%' order by t.id
end
set nocount off
GO存储过程什么的应该没问题,估计是那个keyword造成的,但是我有不知道怎么改,请各位高手帮忙指点下。
Web层:
keyword是从首页的一个textbox 里面取出的:
string str = txtSearch.Text.Trim();
Response.Redirect("Search.aspx?keyword=" + str);
然后查询页面:
protected void getSearchList()
{
str = Request.QueryString["keyword"];
DataList1.DataSource = goodsInfoManage.getKeyword(AspNetPager1.CurrentPageIndex, AspNetPager1.PageSize, str);
DataList1.DataBind(); }
DAL层:
public List<GoodsInfo> getKeyword(int pageIndex, int pageSize, string keyword)
{
SqlParameter[] sqlParameters = {
new SqlParameter("@pageIndex",SqlDbType.Int),
new SqlParameter("@pageSize",SqlDbType.Int),
new SqlParameter("@Keyword",SqlDbType.VarChar)
};
sqlParameters[0].Value = pageIndex;
sqlParameters[1].Value = pageSize;
sqlParameters[2].Value = keyword;
List<GoodsInfo> list = new List<GoodsInfo>();
SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.StoredProcedure, "User_Search", sqlParameters);
while (reader.Read())
{
GoodsInfo gi = new GoodsInfo();
gi.GoodsID = int.Parse(reader["GoodsID"].ToString());
gi.GoodsName = reader["GoodsName"].ToString();
gi.MarketPrice = decimal.Parse(reader["MarketPrice"].ToString());
gi.MemberPrice = decimal.Parse(reader["MemberPrice"].ToString());
gi.GoodsPic_s = reader["GoodsPic_s"].ToString();
gi.GoodsSDesc = reader["GoodsSDesc"].ToString();
gi.Keyword = reader["Keyword"].ToString();
list.Add(gi);
}
reader.Dispose();
return list;
}
存储过程:
CREATE procedure User_Search
(@pagesize int,
@pageindex int,
@Keyword varchar(60))
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select GoodsID from tb_GoodsInfo where GoodsName like '%@keyword%' or Keyword like '%@keyword%' order by GoodsID desc
select O.GoodsID,O.GoodsName,O.MarketPrice,O.MemberPrice,O.GoodsPic_s,O.GoodsSDesc,O.Keyword from tb_GoodsInfo O,@indextable t where O.GoodsID=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound and O.GoodsName like '%@keyword%' or O.Keyword like '%@keyword%' order by t.id
end
set nocount off
GO存储过程什么的应该没问题,估计是那个keyword造成的,但是我有不知道怎么改,请各位高手帮忙指点下。
解决方案 »
- 怎么获取密码框的值
- 求一个sql语句
- 管理员给站内所有用户发送内部信,该如何实现
- 不同网站之间传送数据的的方法
- 怎么给javascript函数的参数动态赋值
- vs2003提示无法验证路径是否匹配怎么办
- MCAD/MCSD制胜宝典——用Visual Basic.NET和Visual C#.NET开发Windows应用程序
- dll!我认为asp.net的最大问题!
- 简单问题,
- 关于aspx的问题
- 用正则表达式提取图片地址问题
- 请问我用VS2005做的WEBSERVICE 连接的是SQL2000的数据库。为什么会出现在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。
{
List <GoodsInfo> list = new List <GoodsInfo>();
........................
while (reader.Read())
{
......................
}
reader.close();
return list;
}
在那提示的,你检查你的方法在任何状态下都会return 我想应该是在你的DAL层报的错误