SqlParameter函数有好几个重载函数,我发现用得最多的是 
public SqlParameter(string, object)和
public SqlParameter(string, SqlDbType, int, string)。
我平时只用public SqlParameter(string, SqlDbType, int, string)函数,
最近发现网上有许多源码只用public SqlParameter(string, object)函数,我不明白这个函数既没有指定数据类型也没有指定大小,编译器可以自己判断吗?如果可以,那这个函数和前一个有什么区别?例如运行速度、性能什么的。谢谢!!

解决方案 »

  1.   

    参数
    parameterName 
    要映射的参数的名称。 
    value 
    一个 Object,它是 SqlParameter 的值。 
    备注
    当在 value 参数中指定 Object 时,SqlDbType 将从 Object 的 .NET Framework 类型推断出。
    请小心使用 SqlParameter 构造函数的这个重载来指定整数参数值。因为此重载接受 Object 类型的 value,所以当此值为零时,必须将整数值转换为 Object 类型,如下面的 C# 示例所示。
    Parameter = new SqlParameter("@pname", Convert.ToInt32(0));
    如果不执行该转换,则编译器将认为您尝试调用 SqlParameter (string, SqlDbType) 构造函数重载。
    示例
    [Visual Basic, C#, C++] 下面的示例创建一个 SqlParameter 并设置它的一些属性。
    [Visual Basic] 
    Public Sub CreateSqlParameter()
      ' Create a parameter of SqlDbType.Int (Int32).
      Dim p1 As SqlParameter = New SqlParameter("@CategoryID", 1)  ' Create a parameter of SqlDbType.NVarChar (String).
      Dim p2 As SqlParameter = New SqlParameter("@Description", "Soft drinks, coffees, teas, beers, and ales")
    End Sub 'CreateSqlParameter
    [C#] 
    public void CreateSqlParameter() 
     {
        // Create a parameter of SqlDbType.Int (Int32).
        SqlParameter p1 = new SqlParameter("@CategoryID", 1);    // Create a parameter of SqlDbType.NVarChar (String).
        SqlParameter p2 = new SqlParameter("@Description", "Soft drinks, coffees, teas, beers, and ales");
     }