可以将存储过程用于 SQL Anywhere .NET 数据提供程序。ExecuteReader 方法用于调用返回结果集的存储过程,而 ExecuteNonQuery 方法用于调用不返回结果集的存储过程。ExecuteScalar 方法用于调用仅返回单个值的存储过程。
调用存储过程前,必须先创建 SAParameter 对象。使用问号作为参数的占位符,如下所示:
sp_producttype( ?, ? ) |
有关 Parameter 对象的详细信息,请参见SAParameter 类。
声明并初始化一个 SAConnection 对象。
SAConnection conn = new SAConnection( "Data Source=SQL Anywhere 12 Demo" ); |
打开该连接。
conn.Open(); |
添加一个 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; |
添加一个 SAParameter 对象以定义存储过程的参数。必须为存储过程需要的每个参数创建一个新的 SAParameter 对象。
SAParameter param = cmd.CreateParameter(); param.SADbType = SADbType.Int32; param.Direction = ParameterDirection.Input; param.Value = 301; cmd.Parameters.Add( param ); |
有关 Parameter 对象的详细信息,请参见SAParameter 类。
调用 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); |
关闭 SADataReader 和 SAConnection 对象。
reader.Close(); conn.Close(); |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |