ADO.NET调用存储过程

1.调用具有输入参数和返回结果的存储过程

 

-------------------建表------------------

 

复制代码
复制代码
CREATE TABLE [tab_cJ] (
[id] [int] IDENTITY (11NOT 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));
                }
            }
        }
复制代码
复制代码

 

 

 

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

 

------------------建存储过程-------------------------

 

 

 

复制代码
复制代码
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());
            }
            
        }
复制代码
复制代码
 

 

 

 

 


合乎自然而生生不息。。。
 
标签: 数据库
0
0
 
« 上一篇: C#中数组、ArrayList和List三者的区别
» 下一篇: SqlCommandBuilder.DeriveParamters(SqlCommand)
posted @   dreamw  阅读(360)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示