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();
        
       }

  • 相关阅读:
    JS实现添加至购物车功能
    python定制数据类型(继承与授权)两种方式
    模拟数据,控制账号
    绑定知识拓展
    面向对象之多态练习
    面向对象之继承与派生(学生管理系统)
    面向对象之组合(学生管理系统)
    一次小的上机试题
    面向对象之self classmethod staticmethod
    haproxy.conf文件操作(基于函数方式)
  • 原文地址:https://www.cnblogs.com/wwwzzg168/p/4121652.html
Copyright © 2011-2022 走看看