C#代码  
ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)

以params声明的形参说明参数的个数是可选的,可以为0个或多个。
以params声明的形参中含一个参数数组,则该参数数组必须位于形参列表最后;
以params声明的参数数组必须是一维数组;
以params声明的形参当为多个时,以","分开传入.

一个参数: 
C#代码  
ExecuteReader(System.Data.CommandType.Text,"select * from table1 where id =@id",new System.Data.SqlClient.SqlParameter("@id",12));

多个参数: 
C#代码  
ExecuteReader(System.Data.CommandType.Text,"select * from table1 where id =@id and name=@name",
new System.Data.SqlClient.SqlParameter("@id",12),new System.Data.SqlClient.SqlParameter("@name","中国"));
或者: 
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params   SqlParameter[] commandParameters)   
        {   
            //...   
        }     
SqlParameter   a   =  new SqlParameter("@id", "12");   
SqlParameter   b   =  new SqlParameter("@name", "中国");     
ExecuteNonQuery(conn,   cmdType,   cmdText,   a,   b);  
或者:
sqlParameter[] paras =new SqlParameter[]{
  new SqlParameter("@id", "12"), 
  new SqlParameter("@name", "中国")
};
ExecuteNonQuery(conn,   cmdType,   cmdText, paras);

因为是params 声明的,所以这个参数可以不填。或传入一个事先设置好的SqlParameter类型的数组。

注意:

当SqlParameter的构造函数为:SqlParameter(string, object)
当在 value 参数中指定 Object 时,SqlDbType 将从 Object 的 .NET Framework 类型推断出。

请小心使用 SqlParameter 构造函数的这个重载来指定整数参数值。 因为此重载接受 Object 类型的 value,所以当此值为零时,必须将整数值转换为 Object 类型,如下面的 C# 示例所示。

Parameter = new SqlParameter("@pname", Convert.ToInt32(0));

如果不执行该转换,则编译器将认为您尝试调用 SqlParameter(string、SqlDbType)构造函数重载

解释:1:通俗点说就是0是设置默认的SqlDbType。
         几乎相当与在其他语言中设置默认参数时使用null一样
         而Convert.ToInt32(0)相当于转义,把设置默认参数的0转化为真实的数值0
      2:在编程中0表示的类型:可以是true,可以看成空,也可以是整数。
         所以必须给它一个确定的类型。

第一种: 
    SqlCommand1.Parameters.Add(参数名称,参数值);
   //参数值为0时,必须转换为Object类型
   //如果不执行该转换,则编译器将认为您尝试调用 SqlParameter(string、SqlDbType)构造函数重载
   //或者使用第二种,确定参数类型,并赋值,不需要转换
第二种: 
SqlCommand1.Parameters.Add(参数名称,参数类型,参数长度,参数所在列的名字); 
然后再SqlCommand1.Parameters[ "参数名称 "].value=参数的值; 
或SqlCommand1.Parameters.Add(参数名称,参数类型,参数长度,参数所在列的名字).value=参数的值;

params SqlParameter[] commandParameters(转)的更多相关文章

  1. 传统的Ado.net 参数设置:params SqlParameter[] commandParameters

    C#代码  ExecuteReader(string connectionString, CommandType commandType, string commandText, params Sql ...

  2. 便于开发的Helper类

    一.将config封装实体层: 例子config: <?xml version="1.0" encoding="utf-8" ?> <Sett ...

  3. 微软版的SqlHelper.cs类

    一,微软SQLHelper.cs类 中文版: using System; using System.Data; using System.Xml; using System.Data.SqlClien ...

  4. SqlHelper类

    using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...

  5. 【2016-11-2】【坚持学习】【Day17】【微软 推出的SQLHelper】

    从网络上找到 微软原版本的SQLHelper,很多行代码.认真看了,学习了.  代码:  using System; using System.Data; using System.Xml; usin ...

  6. SqlHelper c#

    using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.Collect ...

  7. SQLHelper

    今天学习了.net后,经过老师的一番讲解,似乎对它越来越渴望了,希望自己在接下来的学习当中,能很好的驾驭.net,加油吧, 下面我分享一个操作SQL数据库的代码大全,谢谢观赏.嘿嘿,还是比较长的哦, ...

  8. C# DataGridView自定义分页控件

    好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...

  9. C#导入Exel

    ; try { ]; string[] NoExPrentFile = new string[] { "xls", "xlsx" }; ] || fileTyp ...

随机推荐

  1. Spring 为Bean对象执行初始化和销毁方法

    1)初始化: ①可以利用<bean>元素的init-method="方法名"属性指定初始化方法. ②指定的初始化方法是在构造方法调用后自动执行.若非单例模式,则每创建一 ...

  2. (转)Java开发中的23种设计模式详解

    原文出自:http://blog.csdn.net/zhangerqing 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型 ...

  3. HTTP 简要

    HTTP协议就是客户端和服务器交互的一种通迅的格式. 当在浏览器中点击这个链接的时候,浏览器会向服务器发送一段文本,告诉服务器请求打开的是哪一个网页.服务器收到请求后,就返回一段文本给浏览器,浏览器会 ...

  4. JS中OOP之模拟封装和继承和this指向详解

    大家好,今天我带大家学习一下js的OOP, 大家都知道,面向对象有三个基本特征,继承,封装和多态,面向对象的语言有那么几种,C++,PHP,JAVA等,而功能强大的JS可以模拟实现面向对象的两大特征, ...

  5. 使用angular4和asp.net core 2 web api做个练习项目(一)

    这是一篇学习笔记. angular 5 正式版都快出了, 不过主要是性能升级. 我认为angular 4还是很适合企业的, 就像.net一样. 我用的是windows 10 安装工具: git for ...

  6. github和本地仓库关联

    1.安装git 2.在github上注册账号 3.github上创建repository 4.克隆github上的repository 5.在target directory中右键打开git gui

  7. VS2008 C++ 利用WinHttp API获取任意Http网址的源码

    最近一直在看有关Http的知识,对其基本的理论知识已经有所掌握,想通过一个C++具体的例子进行实际操作..于是上网查找了很多资料,发现在Windows系统上,可以通过WinHttp API接口开啊Ht ...

  8. HDU6127Hard challenge

    Hard challenge Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) ...

  9. Linux 进程后台运行的几种方式(screen)

    Ctrl+z/bg/nohup/setsid/& 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: ./rsy ...

  10. Maven合并多个war包的工程需要用到的插件

    <build> <finalName>WebSite</finalName> <plugins> <!-- 配置war包合并的插件 --> ...