小弟一张表是酒店表(HOTEL)---SQL数据库
里面有这么几个字段 城市ID(@CityID),酒店名(@HotelName),酒店星级(@Star),价格(@Price)我的意图是 用户在WEB页面上可以通过这么几个字段去查酒店信息。可以一下指定4个字段,也可以指定这4个字段中的某一个或某几个字段来查信息。如果不指定的话就是查询所有的酒店信息。我想用一个存储过程写,可是不知道该怎么写才是最好的。如果挨个判断传进来的参数是否都有值,那样的话一共有N种情况。这样写实在太麻烦,也不够高效率。希望哪位朋友告诉我一下如何才能写出一个比较好的存储过程。如果一个存储过程不能实现,也希望帮我写一下。谢谢。另外,如果这个不在数据库里写复杂的语句,而是在WEB曾实现,希望大家给我一个思路。
里面有这么几个字段 城市ID(@CityID),酒店名(@HotelName),酒店星级(@Star),价格(@Price)我的意图是 用户在WEB页面上可以通过这么几个字段去查酒店信息。可以一下指定4个字段,也可以指定这4个字段中的某一个或某几个字段来查信息。如果不指定的话就是查询所有的酒店信息。我想用一个存储过程写,可是不知道该怎么写才是最好的。如果挨个判断传进来的参数是否都有值,那样的话一共有N种情况。这样写实在太麻烦,也不够高效率。希望哪位朋友告诉我一下如何才能写出一个比较好的存储过程。如果一个存储过程不能实现,也希望帮我写一下。谢谢。另外,如果这个不在数据库里写复杂的语句,而是在WEB曾实现,希望大家给我一个思路。
解决方案 »
- 子页面传值问题 要求在ie6里能用
- 遇到个关于后台用户管理的问题,不知道该怎么实现 ~
- 关于DataGrid的问题,请高手来帮忙下
- 倾我所有积分!急求 VS.NET 2003 简体中文架构师版!
- 为我的vs2005中建的aspx网页放在子目录就不能访问了
- 请问怎样实现无刷新的DATAGRID?
- 语法错误 (操作符丢失) 在查询表达式 'Provider like '%%' and Data > '%%' and like '%%' < '%%'' 中。
- 迷茫
- aspx里面加一段代码
- asp.net(language="vb")环境下,变量sqldatasetcommand 不认!
- 请问哪位高人知道网站上的手机付费是怎么实现的啊?
- 客户端js如何才能取到RadioButtonList的选择值?
就是你用存储过程,里面一样还是要拼写SQL 语句
然后再执行
sql.Append("SELECT ColumnName FROM Table");
sql.Append("WHERE 1=1");
if ( column1Name.Length != 0 )
{
sql.Append("AND Condition");
}
不为0则把这个数组中的字段加到sql上面
StringBuilder sql = new StringBuilder(DataFunction.GeneralSQL(typeof(CommodityInfo)));
sql.Append(" WHERE 1 = 1");if ( commodityInfo.CommodityClassifyID != 0 )
{
sql.Append(String.Format(" AND CommodityClassifyID IN ( SELECT ID FROM CommodityClassify WHERE LocationString LIKE '%;{0};%' )", commodityInfo.CommodityClassifyID));
}if ( commodityInfo.AreaID != 0 )
{
sql.Append(String.Format(" AND AreaID IN ( SELECT ID FROM Area WHERE LocationString LIKE '%;{0};%' )", commodityInfo.AreaID));
}if ( commodityInfo.CommodityName.Length > 0 )
{
sql.Append(String.Format(" AND CommodityName LIKE '%{0}%'", DataFunction.FormatSQL(commodityInfo.CommodityName)));
}if ( commodityInfo.DisplayName.Length > 0 )
{
sql.Append(String.Format(" AND DisplayName LIKE '%{0}%'", DataFunction.FormatSQL(commodityInfo.DisplayName)));
}if ( dateDiffCount > 0 )
{
sql.Append(String.Format(" AND DATEDIFF(d, CreateTime, GETDATE()) <= {0}", dateDiffCount));
}return SQLRunner.SplitPage(Config.ConnectionString, sql.ToString(), pageIndex, Config.PageItemCount, out recordCount, out pageCount, typeof(CommodityInfo));
看来你非常厉害啊,回贴的技术含量更高,呵呵
不知道理解对了没有
那是我自己写的一个函数来的,功能类似于
StringBuilder sql = new StringBuilder("SELECT * FROM TableName");
SQLRunner.SplitPage,功能相当于dataAdapter.Fill(dataSet);
这些也是自己封装的