SqlParameter可以防止sql注入问题,这里记录下使用方法及代码。

1.封装的sqlHelper类中的数据库操作方法(部分代码,具体可参见.net 使用SQLconnection连接数据库及SQL帮助类)

//这里要填入你的数据库连接字符串
private static string connectionString = "*************************";/// <summary>/// 执行增、删、改的方法/// </summary>/// <param name="sql">预计执行的非SELECT查询语句</param>/// <param name="param">SQL语句中的可变参数</param>/// <returns>返回受影响的行数</returns>public static int ExecuteNonQuery(string sql, params SqlParameter[] param){using (SqlConnection conn = new SqlConnection(connectionString)){try{conn.Open();SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.AddRange(param);return cmd.ExecuteNonQuery();}catch (Exception ex){Console.WriteLine("异常信息:\n" + ex.Message);return -2;}}}

2.使用SqlParameter的代码:

        public static void TestSqlParameter(){string sqlValue = "insert into out_in_storage(day_night_shift,record_acc," +"record_name,handle_acc,handle_name,is_outed,product_line,fixure_id,log_time) " +"values(@day_night_shift,@record_acc,@record_name,@handle_acc,@handle_name,@is_outed," +"@product_line,@fixure_id,@log_time)";SqlParameter[] parameters = {new SqlParameter("@day_night_shift","day"),new SqlParameter("@record_acc", "123"),new SqlParameter("@record_name", "张飞"),new SqlParameter("@handle_acc", "2"),new SqlParameter("@handle_name", "operator"),new SqlParameter("@is_outed", 1),new SqlParameter("@product_line", "1"),new SqlParameter("@fixure_id", "2"),new SqlParameter("@log_time", "2019/2/18")};int affectCount = SqlHelper.ExecuteNonQuery(sqlValue, parameters);Console.WriteLine("影响行数:"+affectCount);}

这里使用了控制台程序进行测试,运行代码的截图如下:

2.这里使用SQLparameter时要注意一点,在前面定义string类型字符串时,对于数据库中varchar类型的数据不需要再添加单引号!!!这是我在后面的使用中所犯的一个错误。下面给出具体的错误例子代码:

错误代码示例:

        public static void TestUpdateParameter(){string str = "6;7;8";string[] strArray = str.Split(';');//下面定义的字符串是错误的,需要将@fixure_id两边的单引号删去,才是正确的写法,这样是执行string sqlValue = "update fixure_entity set entity_status_id=2 where fixure_id='@fixure_id'";SqlParameter[] parameters ={new SqlParameter("@fixure_id",strArray[0])};int count= SqlHelper.ExecuteNonQuery(sqlValue, parameters);Console.WriteLine(count);}

正确代码示例:(将单引号删去)

        public static void TestUpdateParameter(){string str = "6;7;8";string[] strArray = str.Split(';');string sqlValue = "update fixure_entity set entity_status_id=2 where fixure_id=@fixure_id";SqlParameter[] parameters ={new SqlParameter("@fixure_id",strArray[0])};int count= SqlHelper.ExecuteNonQuery(sqlValue, parameters);Console.WriteLine(count);}

3.最后给出一个批量插入多条记录的代码示例(仅供参考,基于第一点的代码)

public static void TestSqlParameter(){string str = "6;7;8";string[] strArray = str.Split(';');string sqlValue = "insert into out_in_storage(day_night_shift,record_acc," +"record_name,handle_acc,handle_name,is_outed,product_line,fixure_id,log_time) " +"values(@day_night_shift,@record_acc,@record_name,@handle_acc,@handle_name,@is_outed," +"@product_line,@fixure_id,@log_time)";SqlParameter[] parameters = {new SqlParameter("@day_night_shift","day"),new SqlParameter("@record_acc", "123"),new SqlParameter("@record_name", "张飞"),new SqlParameter("@handle_acc", "2"),new SqlParameter("@handle_name", "operator"),new SqlParameter("@is_outed", 1),new SqlParameter("@product_line", "1"),new SqlParameter("@fixure_id", "1"),new SqlParameter("@log_time", "2019/2/18")};int affectCount = 0;int totalCount = 0;for (int i = 0; i < strArray.Length; i++){parameters[7] = new SqlParameter("@fixure_id", strArray[i]);affectCount = SqlHelper.ExecuteNonQuery(sqlValue, parameters);totalCount += affectCount;}Console.WriteLine("影响行数:" + totalCount);}

4.SQLparameter使用时还有一个注意点:SqlParameter如果传入0会变成NULL

错误测试代码:

SqlParameter parm = new SqlParameter("@id",0);

调试时候发现@id值变成null,无法正确调用。

正确写法:

SqlParameter parm = new SqlParameter("@id",Convert.ToInt32(0));

微软官方解释:

微软官方的参考文档:
SqlParameter 构造函数

C#——SqlParameter的使用方法及注意事项相关推荐

  1. Dubbo+zookeeper使用方法以及注意事项

    Dubbo+zookeeper使用方法以及注意事项 最近在一个项目中想做一个数据库查询的服务,目的是将数据库查询这块从程序中脱离出来,形成一个公共的服务平台,大家都可以调用,经过考虑决定选用Dubbo ...

  2. 【PC工具】200412更新百度网盘下载工具——最终最简单百度网盘下载方法及注意事项...

    今天有朋友在群里问会员账号,上次好像说过,这种公用的会员账号基本下载量都超了,同样也限速,所以这种账号一般都用来找资源. 百度网盘这个题材也来回来去发过好几个工具了,太麻烦不说,老这么道高一尺魔高一丈 ...

  3. 【PC工具】200324更新百度网盘下载工具——最新百度网盘下载工具使用方法及注意事项...

    今天(200324)更新一个大牛的个人项目pdown,大家可以收藏一下备用(为啥是备用呢,细心的小伙伴应该发现我把标题中的高速两个字去掉了). 先发项目地址:没错还是那个神奇的网站(大神奇人聚集的地方 ...

  4. 【PC工具】更新百度网盘高速下载工具——亿寻使用方法及注意事项

    之前分享的工具和方法大部分都不好用了,我也就不保留了,有需要的朋友可以翻看之前的历史文章. 今天分享一个目前比较主流的下载工具"亿寻",可能很多朋友都用过了,这里我简单说一下使用方 ...

  5. php获取表单$_files,PHP中$_FILES的使用方法及注意事项说明

    $_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传 $_FILES数组内容 ...

  6. 佳能g3800故障灯说明书_汽车仪表灯的使用方法以及注意事项

    能够准确地识别仪表盘上的数据是每个驾驶员的必要能力,但是如今,汽车技术日新月异,大量先进技术已应用于我们的爱车上.汽车仪表盘上的指示灯和中控台上的指示灯按钮变得越来越繁杂,准确识别这些抽象按钮已不再是 ...

  7. 电脑安全注意事项_松下洗衣机维修方法及注意事项

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. 注:本文转载自网络,不代表 ...

  8. go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别

    入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...

  9. 动物之森服务器维护时间,动物之森怎么更改时间 动物森友会改时间方法及注意事项...

    动物之森怎么更改时间?在动物之森中有些任务需要等待很长时间才能成功触发,为了节省时间很多玩家都会用穿越的方法投机取巧,也就是更改NS主机的时间.下面就是动物森友会改时间方法及注意事项了,大家一起来看看 ...

  10. linux gfs原理,Linux GFS 配置方法及注意事项

     Linux GFS(Global File System)是实现为多个访问节点或者主机能同时读写的分布式文件系统. 现测试基于RedHat的GFS简单 配置方法及注意事项实验记录如下: 1.GFS ...

最新文章

  1. JavaMVC 模式
  2. 25岁社招进阿里,从电商到有赞新零售,他仅1年就打开了马云一直想做的新领域!
  3. python 匹配字符串多个_Python:匹配字符串中的多个子字符串
  4. 使用jquery调试ajax接口
  5. Oracle命令--alter 操作
  6. 分布式之redis复习精讲
  7. SpringBoot自动配置实现原理及源码解析(2.3.x)
  8. Kali扫描工具Nmap
  9. 记录List做分页、模糊搜索、时间排序
  10. 1599 元至 1999 元 ,Redmi Note 9 Pro 正式发布:骁龙 750G + 1 亿像素相机
  11. 大数定律和中心极限定理(未完成)
  12. 苏宁管培生java1面2面
  13. 职场人必看:提高工作效率的6大法则
  14. 微信公众号小程序外卖返利分销系统美团饿了么外卖cps软件源码
  15. 天干地支计算公式_天干地支计算方法
  16. 【统计学】统计学基础
  17. 基于NFS共享存储实现kvm虚拟主机动态迁移
  18. Ajax简单实现注册用户名校验
  19. yeah邮箱功能测试
  20. 【Docker】Dockerfile用法详解

热门文章

  1. android studio jdy08,JDY-08蓝牙4.0模块+V3.3手册+.pdf
  2. 计算机软件毕业论文周记,软件毕业设计周记.docx
  3. centos 虚拟机glibc升级_CentOS 6 glibc升级到2.15
  4. Linux 常用软件
  5. 0成本快速提升群活跃等级点亮群LV5图标
  6. 一维码,二维码,zxing
  7. Luarocks 安装遇到的坑
  8. SVM-支持向量机算法概述
  9. gis怎么提取水系_利用ArcGIS水文分析工具提取河网
  10. matlab解三角函数方程组,用matlab解三角函数方程组:y=A+Bx+Csin(Dx)+Esin(Fx)