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


    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=参数的值;

  • 相关阅读:
    我的周记17——“世界再美,也美不过我一日三餐,心情再坏,也坏不过我没心没肺”
    【测试-移动端】 聊聊手机端的测试
    Java基础篇---多线程
    BIO和NIO实现文件复制
    IO操作-BIO
    js数组去重
    js json对象操作
    23种设计模式,每天一种设计模式(2)
    23种设计模式,每天一种设计模式
    .net画二叉树
  • 原文地址:https://www.cnblogs.com/chengjun/p/5490134.html
Copyright © 2020-2023  润新知