• 无废话ADO.NET 第四章 存储过程


      若要调用存储过程,请将 Command 对象的 CommandType 设置为 StoredProcedureCommandType 一旦设置为 StoredProcedure,就可以使用 Parameters 集合来定义参数

    // 创建数据库连接
    SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
    // 创建命令,这里执行存储过程,第一个参数是存储过程的名字
    SqlCommand salesCMD = new SqlCommand("SalesByCategory", nwindConn);
    // 类型设置为 StoredProcedure 表示执行的是存储过程
    salesCMD.CommandType = CommandType.StoredProcedure;
    // 为此存储过程添加参数,参数名字;类型;长度
    SqlParameter myParm = salesCMD.Parameters.Add("@CategoryName", SqlDbType.NVarChar, 15);
    // 设置此参数的值
    myParm.Value = "Beverages";

    nwindConn.Open();

    SqlDataReader myReader
    = salesCMD.ExecuteReader();

    Console.WriteLine(
    "{0}, {1}", myReader.GetName(0), myReader.GetName(1));

    while (myReader.Read())
    {
    Console.WriteLine(
    "{0}, ${1}", myReader.GetString(0), myReader.GetDecimal(1));
    }

    myReader.Close();
    nwindConn.Close();

      Parameter 对象可以使用 Parameter 构造函数来创建,或通过调用 CommandParameters 集合的 Add 方法来创建。Parameters.Add 会将构造函数参数或现有 Parameter 对象用作输入。在将 ParameterValue 设置为空引用时,请使用 DBNull.Value

      对于 Input 参数之外的参数,必须设置 ParameterDirection 属性来指定参数类型是 InputOutputOutput 还是 ReturnValue。以下示例显示创建 InputOutputReturnValue 参数之间的差异。

    SqlCommand sampleCMD = new SqlCommand("SampleProc", nwindConn);
    sampleCMD.CommandType
    = CommandType.StoredProcedure;

    SqlParameter sampParm
    = sampleCMD.Parameters.Add("RETURN_VALUE", SqlDbType.Int);
    // 设置参数类型为返回值
    sampParm.Direction = ParameterDirection.ReturnValue;

    sampParm
    = sampleCMD.Parameters.Add("@InputParm", SqlDbType.NVarChar, 12);
    sampParm.Value
    = "Sample Value";

    sampParm
    = sampleCMD.Parameters.Add("@OutputParm", SqlDbType.NVarChar, 28);
    // 设置参数类型为输出
    sampParm.Direction = ParameterDirection.Output;

    nwindConn.Open();

    SqlDataReader sampReader
    = sampleCMD.ExecuteReader();

    Console.WriteLine(
    "{0}, {1}", sampReader.GetName(0), sampReader.GetName(1));

    while (sampReader.Read())
    {
    Console.WriteLine(
    "{0}, {1}", sampReader.GetInt32(0), sampReader.GetString(1));
    }

    sampReader.Close();
    nwindConn.Close();

    // 通过参数可以得到返回值和输出值
    Console.WriteLine(" @OutputParm: {0}", sampleCMD.Parameters["@OutputParm"].Value);
    Console.WriteLine(
    "RETURN_VALUE: {0}", sampleCMD.Parameters["RETURN_VALUE"].Value);

  • 相关阅读:
    HDU4477 Cut the rope II 递推
    HDU4571 Travel in time 动态规划
    在VS2010中使用$err,hr快速查看当前GetLastError()的值
    对C语言的volatile关键字的理解
    三星S6D1121主控彩屏(240*320*18bit,262K)图形设备接口(GDI)实现
    C语言创建二叉树数据结构, 以及各种遍历
    Ubuntu下使用Dr.com宽带客户端上网的步骤
    8051单片机学习笔记/概要/总结/备忘
    联想笔记本电脑Ubuntu系统下触摸板的锁定
    [MSP430] 集成开发环境 IAR Embedded Workbench for MSP430 5.50
  • 原文地址:https://www.cnblogs.com/hutou/p/1963921.html
Copyright © 2020-2023  润新知