cmd.parameters.Add("@state", state);
cmd.parameters.AddWithValue("@state", state);
这两条语句哪个好。
刚才看了篇文章说到
add 或以加很多参数。相比效率比AddWithValue要高。推崇Add方法。朋友能给说下
Add()方法 cmd.parameters.Add("@state", state); 这句的加上全部参数应该怎么写?个参数表示什么意思?SqlParameter dbParameter_state = new SqlParameter();
dbParameter_state.ParameterName = "@state";
dbParameter_state.Value = state;
dbParameter_state.DbType = DbType.StringFixedLength;
dbCommand.Parameters.Add(dbParameter_state);上面代码写成一句怎么写?cmd.parameters.AddWithValue("@state", state);
应该也能加参数吧?要是能加参数那就不存在效率比Add方法差了吧。
cmd.parameters.AddWithValue("@state", state); 这句加上全部参数怎么写?个参数表示什么意思?

解决方案 »

  1.   

    cmd.parameters.AddWithValue效率会比add 好。前面一个方法是2.0出来的新东西。微软没必要打自己的脸上面代码写成一句怎么写? 
    cmd.parameters.Add("@state",DbType.StringFixedLength,50,state);addwithValue只有两个参数
      

  2.   

    addwithValue只有两个参数.
    我看到的文章说的意思是add方法可以加参数的数据类型参数。addwithValue就要去猜测参数的数据类型。所以add比addwithValue要高。add()最多加几个参数。分别是什么?cmd.parameters.Add("@state",DbType.StringFixedLength,50,state); 
    这句中的 50 表示什么?
      

  3.   

    AddWithValue方法简化了Add方法
    在运行时对所输入的数据类型进行判断(即自动判断参数的类型),获取对应的数据库类型
    但是Add方法应该会比AddWithValue的效率要高
      

  4.   

    cmd.parameters.Add("@state",DbType.StringFixedLength,50,state);
    1、参数名
    2、参数类型
    3、参数长度
    4、传递值1、2、3的值根据数据库定义来填写
      

  5.   

    public SqlParameter AddWithValue(string parameterName, object value)
    {
        return this.Add(new SqlParameter(parameterName, value));

    由此可以看出AddWithValue实际上是调用了
    public SqlParameter Add(SqlParameter value)
    函数,实现手法不同而已cmd.parameters.AddWithValue("@url", "http://www.zixun5.net"); 
    与cmd.parameters.Add("@url", "http://www.zixun5.net"); 
     
    一样。参考
    [Obsolete("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202", false), EditorBrowsable(EditorBrowsableState.Never)]
    public SqlParameter Add(string parameterName, object value)
    {
        return this.Add(new SqlParameter(parameterName, value));
    }
      

  6.   

    补充哈!
    C#应用程序与数据交互的时候只是对参数申明类型,然后传值,但是不会进行类型检查。而且传的时候都是用二进制传的,所以无论传的是什么类型的,最后都是二进制,而且在二进制中,数字3和字符3是一样的,数据库拿到这个东西后根据应用程序中申明的类型转换成相应的类型,这时如果转换不了就会出错。楼主举的例子那样写是没问题,但是假如那不是“0.2”,而是一个字母就会报错了。
        另外再说说数据类型的问题,不同的程序语言对同一个类型的内存组织不是完全相同的,比如数据库的DbNull和C#中的Null就不是一回事了,更深一步的说是他们在内存中表达形式不一样。