2013-10-31 31 views
0

我的執行sql任務返回一個「完整結果集」,它存儲在Object objResults中。我想要一個簡單的方法來獲取objResults中的行數。我該怎麼做 ?我想用c#代碼來獲得這個數字。獲取結果集或ADO記錄集中行數的簡單方法

我可以將整個objResults載入一個DataTable並獲得myDataTable.Rows.Count;的numberOfRows,但是這種方法顯然是效率低下的。

注 - 我正在使用.NET 3.5和Visual Studio 2008.我知道這是一個4.0/visual studio的方法。但它不適用於我。

這裏是4.0溶液 -

的對象實際上是ADO記錄。這是一個COM對象,所以從C#中使用它可能需要互操作程序集或動態。動態更容易。

在你的腳本任務添加引用Microsoft.CSharp,然後訪問這樣的記錄:通過添加colulmn與表達COUNT(*) over()

public void Main() 
{ 
    dynamic result = Dts.Variables["result"].Value; 
    int rowCount = Convert.ToInt32(result.RecordCount); 

    Dts.TaskResult = (int)ScriptResults.Success; 
} 

您還可以添加一個行數列的SQL查詢如:

select *, count(*) over() row_count 
from whatever 

感謝 - 大衛 David http://blogs.msdn.com/b/dbrowne/

+0

嗨!我會在這一個上給予賞金。如果您有興趣,請在2天后訪問此問題。謝謝。 – Steam

回答

0

添加引用「Microsoft ActiveX數據對象」庫。然後,您將擁有COM interop類型定義與C#中的ADO一起使用。

使用C#腳本:

public void Main() 
{ 
    ADODB.Recordset result = (ADODB.Recordset) Dts.Variables["result"].Value; 
    int rowCount = result.RecordCount; 

    Dts.TaskResult = (int)ScriptResults.Success; 
} 

如何添加一個參考 -

編輯腳本並添加引用(菜單項目)步驟在這裏 - http://support.microsoft.com/kb/308611/en-us然後,不要忘記事後保存。單擊全部保存以保存添加參考!

ctrl + s只會保存您的密碼。要保存所有內容,請使用Ctrl + Shift + s。大聲笑 !太不直觀了!