2013-03-01 57 views
1

我只是學習如何使用強類型數據集以及存儲過程,事情進展順利,除了一個小問題。我可以弄清楚如何從我的數據中獲取數據數據表與itarating在它考慮的是,確定年代已經與it.This一行只有一列的事實是我至今:從強類型數據集中獲取一個元素

var bookCountAdapter = new CountBooksTableAdapter(); 
var bookCountDataTable = new BooksAndCategoriesDataSet.CountBooksDataTable(); 
bookCountAdapter.Fill(bookCountDataTable); 
int totalNumberOfBooks = 0; 

foreach (BooksAndCategoriesDataSet.CountBooksRow row in bookCountDataTable) { 
    totalNumberOfBooks = row.TotalNumberOfBooks; 
} 

return totalNumberOfBooks; 

所使用的數據集的存儲過程是:

CREATE PROCEDURE [dbo].[CountBooks] 
AS 

SELECT COUNT(*) FROM Books 

現在我的curent代碼工作得很好問題是我沒有看到有關bookCountDataTable的原因,因爲我只有一個int類型的元素,我只想檢索它。

有沒有一種方法,我可以寫類似這樣的東西拿到元素:

bookCountDataTable.TotalNumberOfBooks 
+0

'bookCountDataTable [0] .TotalNumberOfBooks'應該可以工作。 – 2013-03-01 12:38:04

回答

2

我相信你可以做這樣的事情:如果你確定,你將有你可以做這樣的事情

int totalNumberOfBooks = bookCountDataTable[0].TotalNumberOfBooks; 

在你不該任何情況下,一個單一的元素

if(bookCountDataTable.Rows.Count > 0) 
{ 
    totalNumberOfBooks = Convert.ToInt32(bookCountDataTable.Rows[0]["TotalNumberOfBooks"]); 
} 
2

,因爲我有一個int類型我也只有一個元素,只希望 檢索。

與索引訪問它,然後想:

return bookCountDataTable[0].TotalNumberOfBooks 

但你應檢查行之前數該表。

從你的foreach循環看起來好像是會有多行,然後最後一個的TotalNumberofBooks將被返回。

1

不會使用數據集來檢索單個值。有更好的方法來做到這一點SqlCommand.ExecuteScalar

即使在你的類型化的數據集上,你可以使用設計視圖上的嚮導創建一個返回單個值的查詢。