zoukankan      html  css  js  c++  java
  • .net调用存储过程详解

    本文的数据库用的是sql server自带数据Northwind

     连接字符串

    Code

    confige文件

    Code

    1. 只返回单一记录集的存储过程

    Code

    存储过程Categoriestest1

    Code

     2. 没有输入输出的存储过程

    c#代码部分

    Code

     存储过程Categoriestest2

    Code

    3. 有返回值的存储过程

    c#代码部分


    SqlConnection sqlconn = new SqlConnection(conn);
            SqlCommand cmd 
    = new SqlCommand();
            cmd.Connection 
    = sqlconn;
            cmd.CommandText 
    = "Categoriestest3";
            cmd.CommandType 
    = CommandType.StoredProcedure;
            
    // 创建参数
            IDataParameter[] parameters = {
                    
    new SqlParameter("rval", SqlDbType.Int,4)
                };
            
    // 将参数类型设置为 返回值类型
            parameters[0].Direction = ParameterDirection.ReturnValue;
            
    // 添加参数
            cmd.Parameters.Add(parameters[0]);

            sqlconn.Open();
            
    // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            sqlconn.Close();
            
    // 显示影响的行数和返回值
            Label1.Text += "-" + parameters[0].Value.ToString() ;

    存储过程Categoriestest3


    CREATE PROCEDURE Categoriestest3
    AS
    insert into dbo.Categories 
    (CategoryName,[Description],[Picture])
    values (
    'test1','test1',null)
    return @@rowcount
    GO

    4. 有输入参数和输出参数的存储过程

    c#代码部分


     SqlConnection sqlconn = new SqlConnection(conn);
            SqlCommand cmd 
    = new SqlCommand();
            cmd.Connection 
    = sqlconn;
            cmd.CommandText 
    = "Categoriestest4";
            cmd.CommandType 
    = CommandType.StoredProcedure;
            
    // 创建参数
            IDataParameter[] parameters = {
                    
    new SqlParameter("@Id", SqlDbType.Int,4) ,
                    
    new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,
                };
            
    // 设置参数类型
            parameters[0].Direction = ParameterDirection.Output;  // 设置为输出参数
            parameters[1].Value = "testCategoryName";
            
    // 添加参数
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[
    1]);

            sqlconn.Open();
            
    // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            sqlconn.Close();
            
    // 显示影响的行数和输出参数
            Label1.Text += "-" + parameters[0].Value.ToString() ;

    存储过程Categoriestest4      


    CREATE PROCEDURE Categoriestest4
    @id 
    int output,
    @CategoryName nvarchar(
    15)
    AS
    insert into dbo.Categories 
    (CategoryName,[Description],[Picture])
    values (@CategoryName,
    'test1',null)
    set  @id = @@IDENTITY
    GO

    5. 同时具有返回值、输入参数、输出参数的存储过程

    c#代码部分


     SqlConnection sqlconn = new SqlConnection(conn);
            SqlCommand cmd 
    = new SqlCommand();
            cmd.Connection 
    = sqlconn;
            cmd.CommandText 
    = "Categoriestest5";
            cmd.CommandType 
    = CommandType.StoredProcedure;
            
    // 创建参数
            IDataParameter[] parameters = {
                    
    new SqlParameter("@Id", SqlDbType.Int,4) ,
                    
    new SqlParameter("@CategoryName", SqlDbType.NVarChar,15) ,
                    
    new SqlParameter("rval", SqlDbType.Int,4)
                };
            
    // 设置参数类型
            parameters[0].Direction = ParameterDirection.Output;       // 设置为输出参数
            parameters[1].Value = "testCategoryName";                  // 给输入参数赋值
            parameters[2].Direction = ParameterDirection.ReturnValue;  // 设置为返回值
            
    // 添加参数
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[
    1]);
            cmd.Parameters.Add(parameters[
    2]);

            sqlconn.Open();
            
    // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            sqlconn.Close();
            
    // 显示影响的行数,输出参数和返回值
            Label1.Text += "-" + parameters[0].Value.ToString() + "-" + parameters[2].Value.ToString();

     存储过程Categoriestest5


    CREATE PROCEDURE Categoriestest5
    @id 
    int output,
    @CategoryName nvarchar(
    15)
    AS
    insert into dbo.Categories 
    (CategoryName,[Description],[Picture])
    values (@CategoryName,
    'test1',null)
    set  @id = @@IDENTITY
    return @@rowcount
    GO

     6. 同时返回参数和记录集的存储过程

    c#代码部分

    存储过程Categoriestest6

    7. 返回多个记录集的存储过程

     c#代码部分

    Code

    存储过程Categoriestest7

    Code
  • 相关阅读:
    2015.2.27 UltraEdit中显示XML结构
    2015.1.31 DataGridView自动滚动到某行
    2015.1.15 利用函数实现将一行记录拆分成多行记录 (多年想要的效果)
    2015.1.15 利用Oracle函数返回表结果 重大技术进步!
    2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效
    2015.1.8 Left join 左连接
    2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
    delphi 遍历窗口
    delphi 访问 protected 属性 哈哈
    clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈
  • 原文地址:https://www.cnblogs.com/skynetfy/p/3340437.html
Copyright © 2011-2022 走看看