2011年10月16日 星期日

SqlDataReader 取筆數


參考
--
只有這一招是一次完成動作
--
如果你想要取得DaraReader,又要馬上知道所有的列數,
建議你可以利用Stored Procedure的方式達成。

以下為範例:

Create PROCEDURE MyJob_sp_ReturnMyData
(
@UserName varchar(20),
@TotalRecs int output
)
AS
  Select * From MyTableName Where UserName = @UserName
  Select @TotalRecs = Count(0) From MyTaleName Where UserName = @UserName


然後我們在前端可以這樣做:

//建立Command物件
OleDbCommand cmd = new ("MyJob_sp_ReturnMyData", DBConnstr);
cmd.CommandType = CommandType.StoredProcedure; // 這邊請注意要設定

//加入參數
OleDbParameter paUserName = new OleDbParameter("@UserName", OleDbType.VarChar, 20);
OleDbParameter paTotalCount = new OleDbParameter("@TotalRecs" , OleDbType.integer);
paTotalCount.Direction = ParameterDirection.Output; //這邊請注意要設定
paUserName.Value = "David";

cmd.Parameters.Add(paUserName);
cmd.Parameters.Add(paTotalCount);

//執行

int TotalCount = 0;
try
{
    OleDbDataReader dr = cmd.ExecuteRader();
    TotalCount = paTotalCount.Value; //取得輸出的列數
}
catch
{
    // do something
}
finally
{
    //do something like closing conntion and datareader
}

沒有留言:

張貼留言