ADO.NET调用存储过程

建表

CREATE TABLE [tab_cJ] (
[id] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY,
[name] [varchar] (50) ,
[age] [int] NULL ,
[info] [varchar] (200)
)

创建储存过程

CREATE PROCEDURE QueryInfoByName
@name varchar(50),
@age int
AS
select info from tab_cj where [name]=@name and age=@age
GO

调用

using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True"))
        {
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure; //指定执行存储过程操作
            cmd.CommandText = "QueryInfoByName"; //存储过程名称 
            //对应存储过程QueryInfoByName的第一个参数@name
            SqlParameter parName = new SqlParameter("@name", SqlDbType.VarChar, 50);
            //指定参数@name要转入的值
            parName.Value = "aa";
            //对应存储过程QueryInfoByName的第二个参数@age
            SqlParameter parAge = new SqlParameter("@age", SqlDbType.Int);
            //指定参数@age要转入的值
            parAge.Value = 12;

            //这一步非常重要,一定将设置好的两个参数类型添加到Command对象的参数集合里
            cmd.Parameters.Add(parName);
            cmd.Parameters.Add(parAge);

            //方式一,查询回来的结果需要显示在DataGrid之类的控件上
            DataSet ds = new DataSet();
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds);

            //方式二,按单个值读取 
            conn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Response.Write(reader.GetString(0));
                }
            }
        }

调用具有输出参数的存储过程

创建储存过程

create procedure getAge
(
@name varchar(50),
@age int output
)
as
select @age=age from tab_cJ where [name]=@name

调用储存过程

using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True"))
        {
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure; //指定执行存储过程操作
            cmd.CommandText = "getAge"; //存储过程名称 
            SqlParameter parName = new SqlParameter("@name", SqlDbType.VarChar, 50);
            parName.Value = "aa";
            //对应存储过程getAge的输出参数@age
            SqlParameter parAge = new SqlParameter("@age", SqlDbType.Int);
            parAge.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(parName);
            cmd.Parameters.Add(parAge);
            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                int i = int.Parse(parAge.Value.ToString());
                Response.Write(i.ToString());
                conn.Close();
            }
            catch(Exception ex)
            {
                Response.Write(ex.ToString());
            }
            
        }

摘取至——————

春华秋实

如侵自删

转载于:https://www.cnblogs.com/yellowcool/p/7403421.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值