1.使用Parameter

//利用构造函数方式 ,不推荐这样写
Parameter  p =new Parameter("@id",值);
cmd.Parameters.Add(p);
//利用对象初始化器的方式,推荐是这样写
Parameter p =new Parameter()
{ParameterName="@id",Value="值"};
cmd.Parameters.Add(p);

//推荐和不推荐为了什么?在下面说

2.使用Parameter数组

//不推荐的写法
Parameter[] pms =new Parameter[];
{new Parameter("@id",值);......
};
cmd.Parameter.AddRange(pms);//推荐的写法SqlParameter[] pms= {new SqlParameter("@id", SqlDbType.VarChar,50),.......} ;parameters[0].Value = "值";cmd.Parameter.AddRange(pms);

//推荐和不推荐是因为什么?在下面说

3.Parameter("@id",值)的陷阱

如上1和2中所说,不推荐Parameter("@id",值)的使用方式。为什么呢?

原因是有一次这样写。

new SqlParameter("@aa",0);  发现竟然奇怪的调用了 红色圈中的构造函数。

结果就是数据库中原本赋过值的项,变成了null。

为什么0会被编译器看成MySqlDbType类型呢?

原因是,MySqlDbType是一个枚举。0正好对应了Decimal类型。

所以为了避免这种情况,

推荐使用对象初始化器,

或者直接使用带DbType的构造函数实例化,然后再赋值。

总之,直接用构造函数的方式有点略坑~

转载于:https://www.cnblogs.com/mcad/p/4212391.html

ADO.NET中带参数的Sql语句的陷阱相关推荐

  1. SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

    SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组 ...

  2. 不带参数的SQL语句执行方法

    不带参数的SQL语句执行方法 以下是不带参数的SQL语句执行方法的代码,它调用通用数据访问类(SqlHelper)执行 SqlHelper.ExecuteNonQuery()方法,使用示例为; int ...

  3. oracle 执行带参数的sql语句_当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?...

    当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现? 描述详细一点就是:在要执行的SQL语句中所用到(: parameter)这种参数的个数,因具体条件不同,而 ...

  4. oracle 执行带参数的sql语句_Oracle动态SQL语句的简单执行

    在使用ODP.NET进行Oracle编程时,有时候SQL语句非常复杂,需要采用动态构造查询语句的情况,有两种方法可以构造动态的SQL语句,并执行返回结果集. 1.在数据访问层构造SQL语句 例如下面的 ...

  5. java sql传参_JAVA执行带参数的SQL语句

    MVC系列--MVC源码学习:打造自己的MVC框架(三:自定义路由规则) 前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的R ...

  6. 【C# .NET】Oracle数据库连接的坑之传入parameters参数名SQL语句中的参数变量名不匹配(顺序不一致)的问题

    问题描述 有一个user表,需要修改id为10086的用户的姓名和年龄,在C#的后台这样写: using (IDbConnection db = DapperFactory.GetConnection ...

  7. Order By 排序条件中带参数的写法(Oracle数据库、MyBatis)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. sortWay 是参数. 当sortWay  为 llpx 就 ORDER BY FORMAT AS ...

  8. 带参数的插入语句的问题

    友人遇到问题,数据库中无存储过程,而想写带参数的插入语句. sql里面+了"@"表示sql里面的参数,而你开始定义的只是一个字符串.刚才那个没有赋值,正确看下面的. SqlConn ...

  9. mysql导出不带注释的sql语句_MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事

    MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事 一网友反馈使用mysqlbinlog解析出的二进制日志中的内容中,有些SQL语句有#注释的情况,这个是怎么回事呢?我们通过实验来了 ...

最新文章

  1. Android5.0之CoordinatorLayout的使用
  2. ssm 异常捕获 统一处理_统一异常处理介绍及实战
  3. Spring-AOP 自动创建代理
  4. linux下软件如何防破裂,linux下管道破裂的處理
  5. 科学计算机js代码,JavaScript实现科学计算器
  6. oracle 存储过程字符替换,Oracle存储过程常用字符串处理函数整理
  7. roc曲线怎么绘制_利用ROC曲线寻找最佳cutoff值(连续型变量组成的riskscore)
  8. axure element元件_Axure教程,产品小白从0学起
  9. gis数据与cad数据转换之间的关系
  10. android avrcp处理流程,(VR虚拟现实)Android 蓝牙AVRCP功能的实现.doc
  11. 英文网站源码 国外财经资讯商业新闻整站源码 全自动采集发布 广告联盟网站
  12. 微信每天加多少人不会封号?(行业经验)
  13. 压缩软件大评比,7-ZIP/WinZIP/WinRAR的抗争
  14. 30ea什么意思_ea阶段是什么?你未必全知道!
  15. 【Exception】Class com.XXX1 can not access a member of class com.XXX2 with modifiers “public“
  16. jquery延时执行
  17. 互联网经典SQL面试题及答案解析
  18. 分治法求循环赛日程表
  19. mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...
  20. 金纳米粒子修饰MIL-101骨架材料(AuNPs/MIL-101)/负载COF-TpPa-1(Au NPs/COF-TpPa-1)|齐岳试剂

热门文章

  1. JVM加载class文件的原理机制
  2. nanomsg(ZeroMQ with C)
  3. 理解MySQL——并行数据库与分区(Partition)
  4. bzoj 4602: [Sdoi2016]齿轮
  5. Android开发-ADT Bundle安装
  6. 服务端发post请求产生的编码问题
  7. Python-编码之大彻大悟
  8. 选择奋斗---激励自己
  9. Centos 上部署jeecms注意1
  10. Io 异常: The Network Adapter could not establish the connection解决方案