陪你在路上
║ ║ ║-往事不要再提-----人生已多风雨-║ ║ ║

 

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

 

 

 

 

 

posted on 2011-12-30 12:13  zhaoguo435  阅读(1318)  评论(0编辑  收藏  举报