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

    合乎自然而生生不息。。。
     
  • 相关阅读:
    严援朝座右铭
    王治郅 请让爱国走下神坛
    Java 事件处理实例
    SAP ERP 与 Oracle ERP 比较
    Gantt Component for Delphi Pure Pascal code(TsyGantt VCL)
    XMLRPC vs. SOAP
    Interfaces with Constants Only(java中通用常量定义)
    船舶设计软件简介
    DelphiARX 2000i 简介
    JAVA事件适配器用内部类,匿名类实现事件处理
  • 原文地址:https://www.cnblogs.com/wl-blog/p/13179365.html
Copyright © 2011-2022 走看看