解决方案 »

  1.   

    楼主太强了,正文中连个字都不想打 好 ! 我回答你:
     
       SqlCommand CMD = new SqlCommand(Sp,DBCN);
       CMD.CommandType =
      

  2.   

    /执行存储过程,PUB_SYS_LOG为存储过程名
    public static void InsertGMonitorLog(int sysPrgId,string logType,ing logOperationMsg)
    {
    SqlConnection myConn = new SqlConnection(strConn);
    SqlCommand myComm = new SqlCommand("PUB_SYS_LOG",myConn);
    myComm.CommandType = CommandType.StoredProcedure; SqlParameter myPara = new SqlParameter("@SYS_PRG_ID",SqlDbType.Int);
    myPara.Value = sysPrgId;
    myComm.Parameters.Add(myPara); myPara = new SqlParameter("@LOG_TYPE",SqlDbType.VarChar,3);
    myPara.Value = logType;
    myComm.Parameters.Add(myPara); myPara = new SqlParameter("@LOG_OPERATION_MSG",SqlDbType.VarChar,50);
    myPara.Value = logOperationMsg;
    myComm.Parameters.Add(myPara);

    try
    {
    myConn.Open();
    myComm.ExecuteNonQuery();
    }
    catch(SqlException e)
    {
    e.ToString();
    }
    finally
    {
    myConn.Close();
    }
    }Creating an ADO.NET Universal Data Wrapper
    http://www.15seconds.com/issue/040127.htm
      

  3.   

    如果需要更具体的例子,看这里,
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  4.   

    C#中 sqlserver存储过程调用 心得 2008.04.14以下操作通常需要using System.Data.SqlClient;等
    1.不带参数的存储过程调用:

    如果存储过程名称为 up_GetUsers ,内容是select * from [User],
    对应的调用方式是:
    SqlCommand mycom= new SqlCommand("up_GetUsers",myConnection);
    mycom.CommandType=CommandType.StoredProcedure;//这里与执行sql语句不一样哦。
    myReader=null;  //之前要建立reader
    try{
    myConnection.Open();
    myReader=mycom.ExecuteReader();//这里可以加上结束动作,关闭数据库

    }catch(....){....}
    最后别忘记关闭数据库和SqlDataReader等(如果有的话)
    2.带输入参数的存储过程调用

    如果存储过程名称为 up_GetUser ,
    内容是  
    CREATE PROCEDURE up_GetUser
    ( @uid int ) AS 
    select * from [User] where UserID=@uid,
    有一个 输入 参数 @uid
    对应的调用方式是:
    //之前建立SqlDataConnection
    SqlCommand mycom= new SqlCommand("up_GetUser",myConnection);
    mycom.CommandType=CommandType.StoredProcedure;

    //以下三行增加了一个输入参数,要增加几个要符合存储过程的参数个数;
    mycom.Parameters.Add("@uid",SqlDbType.Int); //参数名称和类型要和存储过程里的一样 
    mycom.Parameters["@uid"].Direction=ParameterDirection.Input; //参数方向
    mycom.Parameters["@uid"].Value=11; //这里 给出 参数的值
    //这里有些是枚举,不用强记,如SqlDbType和ParameterDirection等,用VS的智能感应方便输入 //还有一种增加参数的方式
    Parameter myParam1=new Parameter("@uid");
    myParam1.Direction=....
    myParam1.Value=...
    mycom.Parameters.Add(myParam1);
    //这种方式方便对单个参数的操作和说明


    myReader=null;  //之前要建立reader
    try{
    myConnection.Open();
    myReader=mycom.ExecuteReader();//这里可以加上结束动作,关闭数据库

    }catch(....){....}
    最后别忘记关闭数据库和SqlDataReader等(如果有的话)3.带输出的存储过程的调用 如果存储过程末尾带 return @xxx  语句,就是可以返回值。
    用一个变量tmp=(转型)mycom.ExecuteNonQuery();即可接受返回值。
       ######----------------------------------------------------------#####
    但是,如果存储过程既返回DataReader又有返回值怎么接受,还有待研究。
       ######----------------------------------------------------------#####4.其他 对于以查询为主的存储过程(通常是 select语句为主,需要返回DataReader)用mycom的 ExecuteReader()函数,它返回一个DataReader;
    对于以数值操作为主的存储过程,通常使用ExecuteNonQuery()函数,它可以返回存储过程的返 回值,默认是返回影响的行数。
    mycom还有ExecuteScalar()和ExecuteXMLReader()函数。后者在除XML操作外不常用。前者的特 点是返回结果集的第一行第一列值。还需要实际应用中发现它的方便。
      

  5.   

    在Northwind数据库创建存储过程CREATE PROC InsertCategory 
    @CategoryName nchar(15), 
    @identity int OUT 
    AS 
    INSERT INTO Categories(CategoryName) Values(@CategoryName) 
    SET @identity = @@identity 
    Return @@RowCount下面的代码演示了如何使用存储过程,及输出参数和返回值,对你可能有点吃力
    SqlConnection cn = new SqlConnection("server=.;uid=sa;pwd=;database=Northwind");
    SqlCommand cmd = new SqlCommand("InsertCategory", cn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@ReturnValue", SqlDbType.Int);
    cmd.Parameters["@ReturnValue"].Direction = ParameterDirection.ReturnValue;
    cmd.Parameters.Add("@CategoryName", SqlDbType.NChar, 15).Value = TextBox1.Text;
    cmd.Parameters.Add("@identity", SqlDbType.Int);
    cmd.Parameters["@identity"].Direction = ParameterDirection.Output;
    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();Label1.Text = string.Empty;
    Label1.Text += cmd.Parameters["@identity"].Value.ToString();
    Label1.Text += " " + cmd.Parameters["@ReturnValue"].Value.ToString();