2011-08-18 134 views
0

我有這個疑問:從數據集返回數

SELECT COUNT(*) From Employees 

我執行查詢,並有這樣的:

public static int GetNumJobs() 
{ 
    clsJobPosting JobPosting = new clsJobPosting(); 
    DataSet dsJobs = JobPosting.GetNumRows(); 
    DataTable dtJobs = dsJobs.Tables[0]; 
    return Convert.ToInt32(dtJobs.Rows[0]); 
} 

GetNumRows()返回的數據集,我想返回這個查詢中的行數,我該如何做到這一點?

回答

0

嘗試改變這種

return Convert.ToInt32(dtJobs.Rows[0]); 

這個

return Convert.ToInt32(dtJobs.Rows[0][0]); 

而且,你爲什麼一個DataSetJobPosting.GetNumRows()回來?您應該返回一個int,所以您不必在整個代碼中重複相同的邏輯。

+0

他將返回一個int。它應該是來自他的數據庫的標量返回,因爲DataSet對於他想要做的事情有太多的開銷。 –

+0

這就是我的建議,我知道當前的方法返回一個int,我很好奇DAO方法。 – shuniar

0

就你的情況而言,dtJobs.Rows["columnName"];其中columnName是從存儲過程返回的列的名稱。

短短几碼的建議,以及:

  1. 這也是一個有點誤導,該方法被命名爲GetNumRows()但你返回DataSet。也許通過說GetJobs或某種程度來使它更具可讀性。

  2. 您不需要在類名前綴cls。 VS IDE將以多種方式爲您提供所有必要的信息。

0

您需要在存儲過程中指定該列的名稱:

SELECT COUNT(*) ItemCount FROM Employees 

在一個側面說明,你真的不應該使用COUNT(*)。只需使用主鍵列,就像這樣:

SELECT COUNT(ItemID) ItemCount FROM Employees 

而不是填充到這個DataSet中,抓住行,你應該使用量執行。有一種方法可以爲單個值返回填充數據集。

並在代碼:

return dtJobs.Rows[0].Field<int>("ItemCount");