[英]Getting one element from a strongly typed data set
我今天刚学会使用强类型数据集和存储过程,除一个小问题外,一切进行得很顺利。考虑到datable具有以下事实,我可以找出如何从数据表中获取数据并对其进行实例化:只有一列其中一行。这是我到目前为止的内容:
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
现在我的当前代码可以正常工作了,问题在于我看不到对bookCountDataTable进行bookCountDataTable
的原因,因为我只有一个int类型的元素,而我只想检索它。
有没有办法通过编写类似以下内容来获取该元素:
bookCountDataTable.TotalNumberOfBooks
因为我只有一个int类型的元素,所以我只想检索它。
然后使用索引访问它:
return bookCountDataTable[0].TotalNumberOfBooks
但是,您应该在之前检查表的行数 。
从您的foreach循环中看起来,如果其中将有多行,则将返回最后一行的TotalNumberofBooks
。
我确定您可以执行以下操作:
if(bookCountDataTable.Rows.Count > 0)
{
totalNumberOfBooks = Convert.ToInt32(bookCountDataTable.Rows[0]["TotalNumberOfBooks"]);
}
如果您确定只有一个元素,则可以执行以下操作
int totalNumberOfBooks = bookCountDataTable[0].TotalNumberOfBooks;
无论如何,您都不应该使用数据集来检索单个值。 有更好的方法来执行此操作,如SqlCommand.ExecuteScalar
即使在键入的数据集上,也可以使用设计视图上的向导来创建返回单个值的查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.