SqlCommand command = new SqlCommand("exec p_test", con);
//SqlCommand command = new SqlCommand("p_test", con);
//command.CommandType = CommandType.StoredProcedure;我想知道 注释部分 和非注释部分 有什么区别
非注释的部分也照样调用存储过程

解决方案 »

  1.   

    SqlCommand默认CommandType是Text,第一种写法没指定,所以CommandText=“exec p_test”,当做一个sql语句执行的,当指定CommandType为StoredProcedure时CommandText属性应设置为存储过程的名称。
    基础啊,对着代码智能提示看一下,或F12一下就可以了。
      

  2.   

    呃、、你说的我都知道 但是你没有说到他们的区别在哪里  或者说 好与不好
    如果说没啥区别 我直接 就用上面的就行了 直接exec 
    干嘛还用下面的那种方式 还多写一句代码
      

  3.   

    无语,一个是当sql语句执行,一个是直接执行存储过程名字和参数
    你用第二种写法可以执行“delect from X where ID=1”之类的吗?
      

  4.   

    你这写法二者没有区别,一个没有参数的存储过程可以用CommandType.Text方式调用(就是默认的没被注释的代码),也可以通过CommandType.StoredProcedure方式调用,但如果有复杂参数,返回数据等,第一种方法就很麻烦了,你得用第二种方法实现,很容易就可以用类似command.Parameters.Add("@xxx", SqlDbType.NVarChar, 10).Value =yyy;之类的代码来传递参数,
      

  5.   


    command.Parameters.Add("@xxx", SqlDbType.NVarChar, 10).Value =yyy;
    这个东西还可以写的这么风骚?、、
    我一直觉得这样写已经霸气侧漏了
    command.Parameters.Add(new SqlParameter("@XXX", SqlDbType.Int) { Value = XXX });
    command.Parameters.AddRange(new SqlParameter[]{
    new SqlParameter("@XXX1",SqlDbType.Int){Value = 1000},
    new SqlParameter("@XXX2",SqlDbType.Int){Value = 1001}
    });话说回来 也就是 这两种方式 出来写法上 没有本质的区别?、
      

  6.   

    一样的,不过我的写法是msdn例子里的标准写法,其实我就是从msdn例子里copy给你的,呵呵,