Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 编程 » .NET 应用程序编程 » SQL Anywhere .NET 数据提供程序

 

使用存储过程

可以将存储过程用于 SQL Anywhere .NET 数据提供程序。ExecuteReader 方法用于调用返回结果集的存储过程,而 ExecuteNonQuery 方法用于调用不返回结果集的存储过程。ExecuteScalar 方法用于调用仅返回单个值的存储过程。

调用存储过程前,必须先创建 SAParameter 对象。使用问号作为参数的占位符,如下所示:

sp_producttype( ?, ? )

有关 Parameter 对象的详细信息,请参见SAParameter 类

 ♦  执行存储过程
  1. 声明并初始化一个 SAConnection 对象。

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 12 Demo" );
  2. 打开该连接。

    conn.Open();
  3. 添加一个 SACommand 对象,以定义并执行一条 SQL 语句。以下代码使用 CommandType 属性将语句标识为存储过程。

    SACommand cmd = new SACommand( "ShowProductInfo",
        conn );
    cmd.CommandType = CommandType.StoredProcedure;

    如果不指定 CommandType 属性,则必须使用问号作为参数的占位符,如下所示:

    SACommand cmd = new SACommand(
        "call ShowProductInfo(?)", conn );
    cmd.CommandType = CommandType.Text;
  4. 添加一个 SAParameter 对象以定义存储过程的参数。必须为存储过程需要的每个参数创建一个新的 SAParameter 对象。

    SAParameter param = cmd.CreateParameter();
    param.SADbType = SADbType.Int32;
    param.Direction = ParameterDirection.Input;
    param.Value = 301;
    cmd.Parameters.Add( param );

    有关 Parameter 对象的详细信息,请参见SAParameter 类

  5. 调用 ExecuteReader 方法以返回 DataReader 对象。Get 方法用于以指定的数据类型返回结果。

    SADataReader reader = cmd.ExecuteReader();
    reader.Read();
    int ID = reader.GetInt32(0);
    string name = reader.GetString(1);
    string description = reader.GetString(2);
    decimal price = reader.GetDecimal(6); 
  6. 关闭 SADataReader 和 SAConnection 对象。

    reader.Close();
    conn.Close();
 调用存储过程的替代方法