ADO.NET调用存储过程

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

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

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

合乎自然而生生不息。。。
 
2
0
 
支持成功
 
« 上一篇: 最隐晦的程序设计指引(转)
» 下一篇: DataTable复制到新的DataTable并筛选

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

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

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

猜你喜欢

转载自www.cnblogs.com/wl-blog/p/13179365.html