通过拼接SQL字符串实现多条件查询
一、通过拼接SQL字符串的方法的好处是:
1、方便查询条件的扩展。
2、简化业务逻辑的判断。
二、例子:
1、界面设计
2、点击查询的代码
/// <summary>
/// 按条件查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtSearch_Click_1(object sender, EventArgs e)
{
List<string> wherelist = new List<string>();
List<SqlParameter> parametlist = new List<SqlParameter>(); if (CbMzh.Checked)
{
wherelist.Add("mzh=@mzh");
parametlist.Add(new SqlParameter("@mzh", TbMzh.Text));
}
if (CbXm.Checked)
{
wherelist.Add("xm like '%'+@xm+'%'");
parametlist.Add(new SqlParameter("@xm", TbXm.Text));
}
if (CbJbmc.Checked)
{
wherelist.Add("jbzd like '%'+@jbzd+'%'");
parametlist.Add(new SqlParameter("@jbzd", TbJbmc.Text));
}
if (CbJzlb.Checked)
{
wherelist.Add("jzlb=@jzlb");
parametlist.Add(new SqlParameter("@jzlb", ComBoxJzlb.Text));
}
if (CbJzks.Checked)
{
wherelist.Add("jzks=@jzks");
parametlist.Add(new SqlParameter("@jzks", TbJzks.Text));
}
if (CbJzys.Checked)
{
wherelist.Add("jzys=@jzys");
parametlist.Add(new SqlParameter("@jzys", TbJzys.Text));
}
if (CbJzrq.Checked)
{
wherelist.Add("jzrq between @start and @end");
string start = DpStart.Value.ToString("yyyy-MM-dd") + " 00:00:00";
string end = DpEnd.Value.ToString("yyyy-MM-dd") + " 23:59:59";
parametlist.Add(new SqlParameter("@start", start));
parametlist.Add(new SqlParameter("@end", end));
}
if (CbJbmcjqcx.Checked)
{
wherelist.Add("jbzd = @jbzd");
parametlist.Add(new SqlParameter("@jbzd", TbJbmc1.Text));
}
string whereSql = string.Join(" and ", wherelist);
string sql = "select mzh,xm,xb,csny,age,pcid,jzks,jzys,jbzd,zddm,gzdw,jtzz,lxfs,jzlb,jzrq,xy from his_mzjzrz";
if (wherelist.Count > )
{
sql = sql + " where " + whereSql + " order by jzrq desc";
}
else
{
MessageBox.Show("请选择检索条件!");
return;
}
DataTable dt = MsSqlHelper.ExecuteDataTable(sql, parametlist.ToArray());
MzrzGridView.DataSource = dt;
toolStripStatusLabel2.Text = string.Format("共检索到{0}条记录", dt.Rows.Count.ToString());
toolStripProgressBar1.Minimum = ;
toolStripProgressBar1.Maximum = dt.Rows.Count;
for (int i = ; i <= dt.Rows.Count; i++)
{
toolStripProgressBar1.Value = i;
} }
通过拼接SQL字符串实现多条件查询的更多相关文章
- SQLServer 存储过程中不拼接SQL字符串实现多条件查询
以前拼接的写法 set @sql=' select * from table where 1=1 ' if (@addDate is not null) set @sql = @sql+' and a ...
- PL/SQL Developer 使用中文条件查询时无数据的解决方法
PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:select userenv('language') from dual; 显示:SIM ...
- SQL 中的多条件查询
在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...
- PL/SQL Developer 使用中文条件查询时无数据的解决方法(转)
原文地址: PL/SQL Developer 使用中文条件查询时无数据的解决方法 PL/SQL Developer 使用中文条件查询时无数据,这是由于字符集的不一致导致的. 执行以下sql命令:sel ...
- 【批量加入】-拼接sql字符串
如今做的一个项目须要用到批量加入,可是封装的底层没有这种方法,所以自食其力,自己来写.我们用的是拼接sql字符串的方法来实现功能. 详细实现流程:首先将须要的数据存储到实体的list中,然后将这个li ...
- 六、SQL语句进行多条件查询,并解决参数为空的情况
一.SQL语句进行多条件查询,并解决参数为空的情况 QueryEntity query; var whereSql = new StringBuilder("Where 1=1") ...
- 【批量添加】-拼接sql字符串 标签: 批量添加 2015-12-13 17:49 2070人阅读 评论(33)
现在做的一个项目需要用到批量添加,但是封装的底层没有这个方法,所以自食其力,自己来写.我们用的是拼接sql字符串的方法来实现功能. 具体实现流程:首先将需要的数据存储到实体的list中,然后将这个li ...
- 查询拼接SQL语句,多条件模糊查询
多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...
- MyBatis中动态SQL语句完成多条件查询
一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作:还通过一些条件选择语句让我们SQL的多条件.动态查询更加容易.简洁.直观. ...
随机推荐
- PyCharm下载及使用
PyCharm教育版是一款能够对你编写Python程序的工作有所帮助的免费编译器. PyCharm-community下载链接:https://pan.baidu.com/s/1Hwd_TOVA3en ...
- 常用输入的js验证
身份证 var idnub = document.getElementById('idnub').value; if(idnub.length > 1){ var reg = /(^\d{15} ...
- Java解析json字符串和json数组
Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){ Map ...
- Oracle 函数 Function
定义 函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分. 函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用. 函数必须有一个返回值 ...
- JavaScript 异步编程的前世今生(下)
ES6 中的 Generator 在 ES6 出现之前,基本都是各式各样类似Promise的解决方案来处理异步操作的代码逻辑,但是 ES6 的Generator却给异步操作又提供了新的思路,马上就有人 ...
- [Swift]LeetCode4. 两个排序数组的中位数 | Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- [Swift]LeetCode306. 累加数 | Additive Number
Additive number is a string whose digits can form additive sequence. A valid additive sequence shoul ...
- [Swift]LeetCode467. 环绕字符串中唯一的子字符串 | Unique Substrings in Wraparound String
Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...
- [Swift]LeetCode968.监控二叉树 | Binary Tree Cameras
Given a binary tree, we install cameras on the nodes of the tree. Each camera at a node can monitor ...
- 机器学习入门16 - 多类别神经网络 (Multi-Class Neural Networks)
原文链接:https://developers.google.com/machine-learning/crash-course/multi-class-neural-networks/ 多类别分类, ...