分享

.net执行存储过程 - 生活就是在不能坚持的时候继续坚持 - 博客园

 liyuepiaoxue 2010-09-15

.net执行存储过程

 

一、表的创建sql语句:

CREATE TABLE [dbo].[myMikeTest] (
 [myID] [int] NOT NULL ,
 [myName] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
 [Address] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
 [Tel] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

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

create proc myTest
   @myID int,
   @output varchar(200) output
as
   --select 结果集合
   selelct * from myMikeTest where myID=@myID
   --对输出参数 进行赋值
   set @output="记录总数:"+convert(varchar(10),(select count(*) from myMikeTest))
   --使用return 给存储过程一个返回值
   return 200;
   go
  
三、在C#中,操作存储过程:

3.1 使用带有参数的sql语句
  private void sql_param()
  {
   SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=sms");
  
   //在sql语句当中引入了@myid参数
   string sql="select * from tree where myMikeTest>@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.Dgd_student.DataSource=ds;
   this.Dgd_student.DataBind();
  }
3.2 存储过程的使用标准版  
private void sql_proc()
{
 SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=sa;database=sms");
 string sql="myTest";
 SqlCommand comm=new SqlCommand(sql,conn);
 
 Comm.CommandType=CommandType.StoredProcedure;
 
 SqlParameter sp=Comm.Parameters.Add("@myID",SqlDbType.Int);
 sp.Value=4;
 
 sp=Comm.Parameters.Add("@output",SqlDbType.Varchar,50);
 sp.Direction=ParameterDeiection.Output;
 
 sp=Comm.Parameters.Add("@myReturn",SqlDbType.Int);
 sp.Driection=ParameterDriection.ReturnValue;
 
 SqlDataAdapter da=new SqlDataAdapter(Comm);
 DataSet ds=new DataSet();
 da.Fill(ds);
 
 string myout=Comm.Parameters["@output"].Value.ToString();
 string myReturn=Comm.Parameters["myReturn"].Value.ToString();
 
 this.Dbd.DataSource=ds;
 this.Dbd.DataBind();
}

3.3 存储过程的使用最简版:  
    private void sql_jyh()
    {

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

        SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=SMS");
        string sql = "execute myTest 3,'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.Dgd_student.DataSource = ds;
        this.Dgd_student.DataBind();

    }
 
 
带多个参数的情况
  create proc myTest2 @myID int,@myName int,@output varchar(200) output
  as
  --select结果集
  select * from myMikeTest where myID>@myID and myName = @myName
  --对输出参数进行赋值
  set @output='记录总数:'+convert(varchar(10),(select count(*) from myMikeTest))
  --使用return,给存储过程一个返回值。
  return 200;
  go
 
  private void ProMove()
  {
  SqlConnection conn=new SqlConnection(strsql);
  string sql="myTest2";
  SqlCommand comm=new SqlCommand(sql,conn);
  comm.CommandType=CommandType.StoredProcedure;
 
  comm.Parameters.Add("@myID",SqlDbType.Int).Value=1;
  comm.Parameters.Add("@myName",SqlDBType.Int).value=1;
  comm.Parameters.Add("@outPut",SqlDbType.Varchar,100);
  comm.Parameters["@output"].Driection=ParameterDriection.Output;
 
  DataSet ds=new DataSet();
  SqlDataAdapter da=new SqlDataAdapter(comm);
  da.fill(ds);
  string rtnstr=comm.Parameters["@output"].value.ToString();
  this.Dgd.DatSource=ds;
  this.Dgd.DataBind();
  }
  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多