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,),
.......
} ;
parameters[].Value = "值";
cmd.Parameter.AddRange(pms);

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

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

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

原因是有一次这样写。

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

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

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

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

所以为了避免这种情况,

推荐使用对象初始化器,

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

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

ADO.NET中带参数的Sql语句的陷阱的更多相关文章

  1. ado.net调用带参数的sql语句

  2. 通过带参数的Sql语句来实现模糊查询(多条件查询)

    #region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books&quo ...

  3. .Net ADO拼接带参数的SQL语句

    首先是在DAL数据访问层中的代码://数据更新的方法public static int shuxing_update(s_passnature model) { string sql = " ...

  4. laravel 中的 toSql 获取带参数的 sql 语句

    默认情况下,toSql 获取到的 sql 里面的参数使用 "?" 代替的,如下: DB::table('user')->where('id', 1)->toSql(); ...

  5. SqlParameter类——带参数的SQL语句

    http://blog.csdn.net/woshixuye/article/details/7218770 SqlParameter 类 表示 SqlCommand 的参数,也可以是它到 DataS ...

  6. 使用带参数的SQL语句向数据库中插入空值

    private void button1_Click(object sender, EventArgs e) { string name = textBox1.Text; int age = Conv ...

  7. JAVA执行带参数的SQL语句

    转自 http://www.cnblogs.com/raymond19840709/archive/2008/05/12/1192948.html

  8. C#中 如何执行带GO的sql 语句

    C#中是不允许执行带GO的sql 语句的, 如何做呢? 思路就是将带GO的sql语句转化为分段执行, 但在同一事务内执行. 扩展方法是个很不错的主意, 但是尽量不要影响原来的cmd的一些东东, 如 c ...

  9. 如何查找MySQL中查询慢的SQL语句

    如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...

随机推荐

  1. 关于window.open弹出窗口被阻止的问题

    原文:http://blog.csdn.net/fanfanjin/article/details/6858168 在web编程过程中,经常会遇到一些页面需要弹出窗口,但是在服务器端用window.o ...

  2. springmvc 路由

    工作中MVC是较常使用的web框架,作为研发人员,也习惯了以编写Controller作为项目开始,写好了Controller和对应的方法,加上@RequestMapping注解,我们也就认为一切已经准 ...

  3. 简述Java中Http/Https请求监听方法

    一.工欲善其事必先利其器 做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦.本文将采 ...

  4. Week2-作业1 -阅读《构建之法》

    第一章 在阅读第1.2.2节时,感受最深,记得开学初有老师就给我们分析过计算机专业和我们专业的区别,当时是给我们讲的是计算机科学注重的是理论,偏向于硬件方面,而软件工程则注重实践,偏向于软件方面.然很 ...

  5. Bootstrap-tagsinput标系统使用心得

    最近工作中由于需求使用到了Bootstrap-tagsinput标系统,我的需求是: 1)能够从后台数据库获取标签信息展示到前端页面: 2)能够实现输入标签添加到后台,并ajax刷新页面: 3)能够实 ...

  6. PHP对象的复制

    对象的复制(克隆) $obj1  =  new  A(); $obj1->p1 = 11; $obj2  = $obj1; //值传递 //则,现在有几个对象?——1个对象! 当然: $obj3 ...

  7. docker+mesos+marathon

    前言 (Core) [root@docker-slave ~]# uname -r 3.10.0-229.4.2.el7.x86_64 [root@docker-slave ~]# uname -m ...

  8. 第199天:js---扩充内置对象功能总结

    一.数组 1.删除数组中指定索引的数据 /** 删除数组中指定索引的数据 **/ Array.prototype.deleteAt = function (index) { if (index < ...

  9. kettle、Oozie、camus、gobblin

    kettle简介 http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply1.html Oozie介绍 http://blog ...

  10. 洛谷P3656 展翅翱翔之时 (はばたきのとき)(洛谷2017.3月赛round1 t4)

    题目背景 船が往くよミライへ旅立とう 船只启航 朝未来展开旅途 青い空笑ってる(なにがしたい?) 湛蓝天空露出微笑(想做些什么?) ヒカリになろうミライを照らしたい 化作光芒吧 想就此照亮未来 輝きは ...