使用SqlParameter将查询条件参数化可以达到以下效果:

  1. 避免SQL注入,提高代码而安全性。
  2. 利用SqlParameter的重载方法、参数数组等可以提高代码的重用率
  3. 可以实现SQl语句参数的动态添加

插入内容:

using的使用,在Ado.Net程序中,用using的方式打开数据库时,当不用数据库连接可以自动关闭释放资源。有利于资源的回收利用

SQL语句参数化的三种方式:

1.直接参数化(以win32程序为例)

using System.Data.SqlClient;namespace EasySqlParameter
{class Program{static void Main(string[] args){string conText = "server=.;uid=sa;pwd=123456;database=ars";using (SqlConnection con = new SqlConnection(conText)){con.Close();//打开数据库连接string sqlText = "select sName from student where sId=@sid";//sql语句带多个参数using (SqlCommand cmd = new SqlCommand(sqlText, con)){SqlParameter parameter = new SqlParameter("@sid", 20160001);cmd.Parameters.Add(parameter);//将参数添加到SQL执行命令cmd.ExecuteNonQuery();//返回受影响的行数}}}}
}

2.参数数组参数化(以win32程序为例)

using System.Data.SqlClient;namespace SQLParameters
{class Program{static void Main(string[] args){string conText = "server=.;uid=sa;pwd=123456;database=ars";using (SqlConnection con = new SqlConnection(conText)){using (SqlCommand cmd = con.CreateCommand()){con.Open();cmd.CommandText= "select sName from student where sId = @sid and sMajor = @sMajor and sPassword = @sPassword";//构造参数数组parametersSqlParameter[] parameters = {new SqlParameter("@sid",20160001),new SqlParameter("@smajor",1101),new SqlParameter("@spassword",123456) };cmd.Parameters.AddRange(parameters);cmd.ExecuteNonQuery();}}}}
}

3.参数集合参数化(适合多条件查询或者模糊查询使用),以两个条件的winform多条件模糊查询为例:

(1)查询界面构建如下:

(2)搜索按钮中的代码如下:

        private void btnSearch_Click(object sender, EventArgs e){//************查询条件集合的获取***************//List<SqlParameter> parameters = new List<SqlParameter>();//构建参数数组List<string> wherelist = new List<string>();//构建查询条件字符串数组if (!string.IsNullOrEmpty(this.txtsId.Text.Trim()))//判断输入条件是否为空,否则添加查询的参数和条件{wherelist.Add("sId like @sId");SqlParameter parameter = new SqlParameter();parameter.ParameterName = "@sId";parameter.Value = "%" + textsId.Text.ToString() + "%";parameters.Add(parameter);}if (!string.IsNullOrEmpty(this.txtsName.Text.Trim())){wherelist.Add("sName like @sName");SqlParameter parameter = new SqlParameter();parameter.ParameterName = "@sName";parameter.Value = "%" + textsName.Text.ToString() + "%";parameters.Add(parameter);}//************将查询条件集合转换为数组***************//SqlParameter[] sqlParameters = parameters.ToArray();//************查询所需SQL语句的拼接***************//string sqlText = "select sId, sName, sPassword, sMajor from student";//没有拼接的SQL语句,没有查询条件if (wherelist.Count > 0)//查询条件字符串的拼接{sqlText += " where " + string.Join(" and ", wherelist);}//************按条件查询数据***************//string conText = "server=.;uid=sa;pwd=123456;database=ars";using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText, conText)){DataTable dt = new DataTable();//接收查询数据adapter.SelectCommand.Parameters.AddRange(sqlParameters);//将参数值赋给查询条件adapter.Fill(dt);this.dataGridView1.DataSource = dt;}}

(3)模糊查询结果

Ado.Net SQL语句参数化(SqlParameter用法)(多条件模糊查询的实现)相关推荐

  1. Mybatis中的SQL语句等于、不等于和模糊查询的语法

    Mybatis中的mapper文件SQL语句 转义字符 等于 = = (等于) 大于 > > (大于) 小于 < < (小于) 不等于 <> <>(不等 ...

  2. Elasticsearch 实现类似SQL语句中like %关键字% 的单纯模糊查询(不进行分词)

    一.前言 1.1 需求描述 用Elasticsearch 实现类似SQL中like的功能('%aaa%'),查询数据时,要前后模糊匹配,不要分词(用户输入AAA,检索的结果中AAA需要连在一起,不能是 ...

  3. SQL语句 SELECT LIKE用法详解

    在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用 ...

  4. 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以 及SQL语句中日期格式的表示(#).('') 在Delphi中进行字符变量连接相加时单引号用( ...

  5. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法...

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...

  6. SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的 ...

  7. sql语句中exists用法详解

    文章目录 一.语法说明 exists: not exists: 二.常用示例说明 1.查询a表在b表中存在数据 2.查询a表在b表中不存在数据 3.查询时间最新记录 4.exists替代distinc ...

  8. 总结一下SQL语句中引号()、quotedstr()、()、format()在SQL语句中的用法

    View Code 总结一下SQL语句中引号('').quotedstr().('''').format()在SQL语句中的用法以及SQL语句中日期格式的表示(#).('''')在Delphi中进行字 ...

  9. delphi去掉字段前后的引号_Delphi编程SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法...

    Delphi编程SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 (2011-06-23 12:14:13) 标签: delphi编程 sql语句引号 q ...

  10. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以 及SQL语句中日期格式的表示(#).('') 在Delphi中进行字符变量连接相加时单引号用( ...

最新文章

  1. 2014“云”盘点:改变着的互联网和被改变的云计算
  2. 【首发】徐亦达团队新论文推荐:模限界矩阵分解
  3. 11-使用NSPersistentContainer搭建CoreData Stack
  4. 修正 010 Editor 模板文件 MachO.bt 的错误
  5. 数据结构之排序五:选择排序
  6. 已知函数func的C语言代码框架,第三章习题-ddg..doc
  7. Java - 用数组求出斐波那契数列的前20项值
  8. RocketMQ 顺序消费只消费一次 坑
  9. Android studio报Error:(26, 13)-v7:27.错误的解决方法
  10. qq语音按住ctrl就静音怎么解决_干货!PS超实用去水印方法汇总(图文教程),可解决99%水印烦恼...
  11. ASP.NET伪静态
  12. c语言 json解析器,撸一个JSON解析器
  13. 高德地图模仿微信发送位置实现拾取坐标
  14. 可以免费自学编程的12个网站
  15. C语言基础学习——简单的C程序格式
  16. 网吧还原软件测试简历,测试人员-斯普林网吧客户服务系统.doc
  17. Java读取OPC DA报错:org.jinterop.dcom.common.JIException: Access is denied. [0x80070005]
  18. wordpress菜单显示css字体,WordPress导航菜单图标字体插件font awesome 4 menus
  19. 职场小人拉帮结派被孤立要如何处理
  20. 【电脑问题解决】回收站右键,多出来个“找回清空的文件”选项,怎么删除这个选项?

热门文章

  1. 云课堂智慧职教网页版登录入口_云课堂智慧职教登录入口
  2. 计算机仿真实验报告实验原理简述,数控编程实验报告总结
  3. [Laravel] 如何使用PHP实现前端分页
  4. 华为笔试题:根据子网掩码判断两个IP地址是否在同一子网,并输出IP1的网络号
  5. QQ音乐播放地址 API
  6. 利用Python在统计局网站爬取统计年鉴
  7. 代码 马佳义_武汉大学电子信息学院
  8. 近期看到AlphaGo算法最清晰的解读
  9. 工行u盾显示316_企业用户,插U盾点击U盾登录后,显示“无法显示该网页”
  10. 瑞利衰落的概念及应对技术——信道编码、交织、跳频