zoukankan      html  css  js  c++  java
  • SqlParameter设定的value值为0时、调用的存储过程获取到的值却为null解决方法

    SqlDataReader dr = SqlHelper.ExecuteReader(Config.Connectionstring,

                    CommandType.StoredProcedure, 

                    "GetDatasById",

                    SqlParameter("@Id",0));

     代码如上:存储过程获取的Id值为NULL

    网上查了好久才查出解决方法,

    View Code
    SqlParameter[] pars = new SqlParameter[]{ new SqlParameter("@Id", SqlDbType.Int),};
                pars[0].Value = 0;
    SqlDataReader dr = SqlHelper.ExecuteReader(Config.Connectionstring,
                    CommandType.StoredProcedure, "GetDataById",pars);

    当在 value 参数中指定 Object 时,SqlDbType 将从 Object 的 .NET Framework 类型推断出。

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

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

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

    微软给的解释:

    http://msdn.microsoft.com/zh-cn/library/0881fz2y%28v=VS.80%29.aspx

  • 相关阅读:
    ARTS 计划第四周
    ARTS 计划第三周周
    计划表的科学设定
    C/C++内存分配
    ARTS 计划第二周周
    jsoncpp 和 libcurl的编译与使用 vs2010
    ARTS 计划第一周
    unix中的v节点和i节点
    百度地图demo
    带有定位当前位置的百度地图web api 前端代码
  • 原文地址:https://www.cnblogs.com/zhaoguo435/p/2307298.html
Copyright © 2011-2022 走看看