人性化的条件查询语句

hebaobao19880921 2011-07-29 10:48:39
前台搜索的条件有关键字搜索和日期段搜索
我希望能在DAL里的SQL里面将这些条件处理一下
比如用户只输入一个条件可以查询 可以输入条件加日期段也可以查询 还有就是输入框只有一个的情况下 我如果想判断它是否输入的是信息中的资源名称为关键字呢还是信息描述为关键字 。
...全文
98 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaysea 2011-07-29
  • 打赏
  • 举报
回复
写sql语句的那层里
hebaobao19880921 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxr0323 的回复:]
拼接WHERE条件

string str="select * from table where 1=1";

基本查询

如果点时间就
str+= and 时间字段='"+参数+"';
其他同理
[/Quote]
这个判断我该在哪里做才好 我使用的是3层结构
子夜__ 2011-07-29
  • 打赏
  • 举报
回复
拼接WHERE条件

string str="select * from table where 1=1";

基本查询

如果点时间就
str+= and 时间字段='"+参数+"';
其他同理
hebaobao19880921 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 msdnxgh 的回复:]
这个不要在DAL 层做,因为DAL就数据操作层,就是对数据层的增删更查。

涉及到逻辑运算的,就要放在BLL层,这也是BLL层存在的意义。

就比如说,像关键字搜索和日期段搜索
数据库就有这两种查询

在BLL层判断一下,如果是关键字搜索,就用DAL内面的关键字搜索方法
如果是日期段搜索就用DAL内面的日期段搜索方法
[/Quote]
我记得有数据库有一个isnull来判断用户是不是使用了某个字段作为查询条件 一时间忘记了用法 我在想
MSDNXGH 2011-07-29
  • 打赏
  • 举报
回复
这个不要在DAL 层做,因为DAL就数据操作层,就是对数据层的增删更查。

涉及到逻辑运算的,就要放在BLL层,这也是BLL层存在的意义。

就比如说,像关键字搜索和日期段搜索
数据库就有这两种查询

在BLL层判断一下,如果是关键字搜索,就用DAL内面的关键字搜索方法
如果是日期段搜索就用DAL内面的日期段搜索方法

果-果 2011-07-29
  • 打赏
  • 举报
回复
写个存储过程不是更好?

在存储过程里判断到底传进来了几个参数,分多种情况做处理,虽然写的代码可能会多一些,但效率比拼SQL语句要好哦
woshimaikou 2011-07-29
  • 打赏
  • 举报
回复
都是判断加拼接,放在那里看实际情况
myhope88 2011-07-29
  • 打赏
  • 举报
回复
就在bll层判断下就行了嘛
MSDNXGH 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hebaobao19880921 的回复:]
引用 7 楼 wxr0323 的回复:
引用 4 楼 hebaobao19880921 的回复:

引用 3 楼 wxr0323 的回复:
拼接WHERE条件

string str="select * from table where 1=1";

基本查询

如果点时间就
str+= and 时间字段='"+参数+"';
其他同理

这个判断我该在哪里做才好 我使用……
[/Quote]
子夜的意思是这样的


/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select id,imgRul,imgSrc,title,ml,XMLRul ");
strSql.Append(" FROM Rss ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return DbHelperSQL.Query(strSql.ToString());
}

上面是DAL代码

你在BLL做判断,拼造where语句。
然后传进去就行了
hebaobao19880921 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jaysea 的回复:]
写sql语句的那层里
[/Quote]
这个+=之后不需要那个isnull的判断吗?
hebaobao19880921 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wxr0323 的回复:]
引用 4 楼 hebaobao19880921 的回复:

引用 3 楼 wxr0323 的回复:
拼接WHERE条件

string str="select * from table where 1=1";

基本查询

如果点时间就
str+= and 时间字段='"+参数+"';
其他同理

这个判断我该在哪里做才好 我使用的是3层结构

写在BLL里。
生成……
[/Quote]
前辈你是写反了?还是我孤陋寡闻 ?反着来?
wangshijie2019 2011-07-29
  • 打赏
  • 举报
回复
DAL和BLL层 个人觉得区别不是很大的吧
子夜__ 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hebaobao19880921 的回复:]

引用 3 楼 wxr0323 的回复:
拼接WHERE条件

string str="select * from table where 1=1";

基本查询

如果点时间就
str+= and 时间字段='"+参数+"';
其他同理

这个判断我该在哪里做才好 我使用的是3层结构
[/Quote]
写在BLL里。
生成的SQL 拿去DAL查
jmx123456789 2011-07-29
  • 打赏
  • 举报
回复
拼接在dal里面能好点 虽然有少量判断 但不至于暴露sql关键字

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧