• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#存储过程调用的三个方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
//带参数的SQL语句
        private void sql_param()
        {
            SqlConnection conn = new SqlConnection("server=WIN-OUD59R7EHCH;uid=sa;pwd=123456;database=china");
            string sql = "select *from test where uid=@myid";
            SqlCommand comm = new SqlCommand(sql,conn);
            SqlParameter sp = comm.Parameters.Add("@myid",SqlDbType.Int);
            sp.Value = 2;
            comm.CommandType = CommandType.Text;
            SqlDataAdapter sda = new SqlDataAdapter(comm);
            DataSet ds = new DataSet();
            sda.Fill(ds,"test");
            this.dataGridView1.DataSource = ds.Tables[0];
        }

        //标准的存储过程
        private void sql_proc()
        {
            SqlConnection conn = new SqlConnection("server=WIN-OUD59R7EHCH;uid=sa;pwd=123456;database=china");
            conn.Open();
            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 = 1;
            //定义一个输出参数,不许需要赋值。Direction用来描述参数的类型
            //Direction默认为输入参数,还有输出参数和返回值
            sp = comm.Parameters.Add("@output",SqlDbType.VarChar,200);
            sp.Direction = ParameterDirection.Output;
            /*定义过程的返回值参数,过程执行完之后,将把过程的返回值
             * 赋给myreturn的Parameters赋值
             */
            sp = comm.Parameters.Add("myreturn",SqlDbType.Int);
            sp.Direction = ParameterDirection.ReturnValue;
            /*使用SqlDataAdapter将自动完成数据库的打开和关闭过程,
             * 并将执行t-sql语句或存储过程
             * 
             * 如果存储过程只是执行相关操作,如级联删除或者更新,
             * 使用sqlcommand的execute方法即可
             * 
             */
            try
            {
                SqlDataAdapter sda = new SqlDataAdapter(comm);
                DataSet ds = new DataSet();
                comm.ExecuteNonQuery();
                //在执行完存储过程之后,可得到输出参数
                string myout = comm.Parameters["@output"].Value.ToString();
                //打印输出参数
                MessageBox.Show("打印输出参数:" + myout);
                //打印存储过程返回值
                myout = comm.Parameters["myreturn"].Value.ToString();
                MessageBox.Show("存储过程返回值:" + myout);

                sda.Fill(ds, "test");
                this.dataGridView1.DataSource = ds.Tables[0];
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
                conn.Close();
            }
            
        }

        //简易的存储过程的使用
        private void jyc()
        {
            SqlConnection conn = new SqlConnection("server=WIN-OUD59R7EHCH;uid=sa;pwd=123456;database=china");
            string sql = "execute proc_out 1,'12'";
            SqlCommand comm = new SqlCommand(sql,conn);
            SqlDataAdapter da = new SqlDataAdapter(comm);
            DataSet ds = new DataSet();
            da.Fill(ds,"test");
            this.dataGridView1.DataSource = ds.Tables[0];

        }

存储过程

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 200;
go

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap