zoukankan      html  css  js  c++  java
  • 如何在C#中使用存储过程(SQL Server 2000)

    要在C#中使用存储过程,首先看看test表的创建sql语句:
     

    create table test55
    (
    uid int identity(1,1),
    class1 varchar(20),
    class2 varchar(20),
    uname varchar(20),
    birth smalldatetime,
    meno varchar(50)
    )
     
    alter table test55
    add constraint primary_id primary key(uid)

    创建一个有输入、输出、返回值参数的存储过程: WebDriver

    create proc proc_out @uid int,@output varchar(200) output

    as

    --select结果集

    select * from test where uid>@uid


    --对输出参数进行赋值

    set @output='记录总数:'+convert(varchar(10),(select count(*) from test))

    --使用return,给存储过程一个返回值。

    return 200;

    go

    在C#中使用存储过程:

    使用带有参数的sql语句

    private void sql_param()
      {
     
      SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
        
      
    //在sql语句当中引入了@myid参数

      string sql="select * from test where uid>@myid";
      SqlCommand comm=new SqlCommand(sql,conn);
               
      
    //使用comm的Parameters属性的add方法,对上述的@myid参数进行定义和赋值

      
    //SqlDbType类提供了与SqlServer数据类型一致的数据库类型

      SqlParameter sp=comm.Parameters.Add("@myid",SqlDbType.Int);
      sp.Value=10;
    //对输入参数赋值

          
      
    //Command对象默认的执行方式为Text,不写下句亦可

      comm.CommandType=CommandType.Text;
        
      
    //将Command对象作为DataAdapter的参数传进

      SqlDataAdapter da=new SqlDataAdapter(comm);
      DataSet ds=new DataSet();
      da.Fill(ds);
     
            
    //绑定数据到DataGrid1控件上

      this.DataGrid1.DataSource=ds;
      this.DataGrid1.DataBind();
       
      }

    存储过程的使用标准版 

    private void sql_proc()
       {
          
        SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
        string sql="proc_out";
        SqlCommand comm=new SqlCommand(sql,conn);
         
        
    //把Command执行类型改为存储过程方式,默认为Text。

        comm.CommandType=CommandType.StoredProcedure;
     
        
    //传递一个输入参数,需赋值

        SqlParameter sp=comm.Parameters.Add("@uid",SqlDbType.Int);
        sp.Value=10;
     
        
    //定义一个输出参数,不需赋值。Direction用来描述参数的类型

        
    //Direction默认为输入参数,还有输出参数和返回值型。

        sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50);
        sp.Direction=ParameterDirection.Output;
     
        
    //定义过程的返回值参数,过程执行完之后,将把过程的返回值赋值给名为myreturn的Paremeters赋值。

        sp=comm.Parameters.Add("myreturn",SqlDbType.Int);
        sp.Direction=ParameterDirection.ReturnValue;
         
        
    //使用SqlDataAdapter将自动完成数据库的打开和关闭过程,并执行相应t-sql语句或存储过程

        
    //如果存储过程只是执行相关操作,如级联删除或更新,使用SqlCommand的execute方法即可。

        SqlDataAdapter da=new SqlDataAdapter(comm);
        DataSet ds=new DataSet();
        da.Fill(ds);
         
         
        
    //在执行完存储过程之后,可得到输出参数

        string myout=comm.Parameters["@output"].Value.ToString();
         
        
    //打印输出参数:

        Response.Write("打印输出参数:"+myout);
     
        
    //打印存储过程返回值

        myout=comm.Parameters["myreturn"].Value.ToString();
        Response.Write("存储过程返回值:"+myout);
     
        this.DataGrid1.DataSource=ds;
        this.DataGrid1.DataBind();
     
     
       }

    存储过程的使用最简版:

    private void sql_jyh()
       {
     
       
    //最简写法,把存储过程当作t-sql语句来使用,语法为:exec 过程名 参数

     
       SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
       string sql="execute proc_out 10,'12'";
       SqlCommand comm=new SqlCommand(sql,conn);
        
       
    //使用SqlDataAdapter将自动完成数据库的打开和关闭过程,并执行相应t-sql语句或存储过程

       
    //如果存储过程只是执行相关操作,如级联删除或更新,使用SqlCommand的execute方法即可。

       SqlDataAdapter da=new SqlDataAdapter(comm);
       DataSet ds=new DataSet();
       da.Fill(ds);
        
       
    //绑定数据

       this.DataGrid1.DataSource=ds;
       this.DataGrid1.DataBind();
        
       }

  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/4121652.html
Copyright © 2011-2022 走看看