zoukankan      html  css  js  c++  java
  • 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());
                }
                
            }

    摘取至——————

    春华秋实

    如侵自删

  • 相关阅读:
    【找回数学的感觉】1 再版汉诺塔等
    【算法】7 分不清栈和队列?一张图给你完整体会
    好玩的WPF第四弹:用Viewport2DVisual3D实现3D旋转效果
    我们应该怀念爱因斯坦的五个原因
    【万里征程——Windows App开发】如何在多个页面间读取/保存文件【草稿】
    仅仅是来自深夜的想法
    好玩的WPF第三弹:颤抖吧,地球!消失吧,地球!
    Markdown大赛二等奖
    让JavaScript在Visual Studio 2015中编辑得更容易
    好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效按钮
  • 原文地址:https://www.cnblogs.com/yellowcool/p/7403421.html
Copyright © 2011-2022 走看看