上述代码片段调用了以下存储过程
CREATE PROCEDURE DATGetProductDetailsSPOutput
@ProductID int
@ProductName nvarchar() OUTPUT
@UnitPrice money OUTPUT
AS
SELECT @ProductName = ProductName
@UnitPrice = UnitPrice
FROM Products
WHERE ProductID = @ProductID
GO
如何使用 SqlDataReader 来检索单个行
可以使用 SqlDataReader 对象来检索单个行尤其是可以从返回的数据流中检索需要的列值以下代码片段对此进行了说明
void GetProductDetailsUsingReader( int ProductID
out string ProductName out decimal UnitPrice )
{
using( SqlConnection conn = new SqlConnection(
server=(local);Integrated Security=SSPI;database=Northwind) )
{
// Set up the command object used to execute the stored proc
SqlCommand cmd = new SqlCommand( DATGetProductDetailsReader conn );
cmdCommandType = CommandTypeStoredProcedure;
// Establish stored proc parameters
// @ProductID int INPUT
SqlParameter paramProdID = cmdParametersAdd( @ProductID ProductID );
paramProdIDDirection = ParameterDirectionInput;
connOpen();
using( SqlDataReader reader = cmdExecuteReader() )
{
if( readerRead() ) // Advance to the one and only row
{
// Return output parameters from returned data stream
ProductName = readerGetString();
UnitPrice = readerGetDecimal();
}
}
}
}
使用 SqlDataReader 对象来返回单个行
建立 SqlCommand 对象
打开连接
调用 SqlDataReader 对象的 ExecuteReader 方法
通过 SqlDataReader 对象的类型化访问器方法(在这里为 GetString 和 GetDecimal)来检索输出参数
上述代码片段调用了以下存储过程
CREATE PROCEDURE DATGetProductDetailsReader
@ProductID int
AS
SELECT ProductName UnitPrice FROM Products
WHERE ProductID = @ProductID
GO
[] [] [] [] [] [] [] [] []