Asa*_*sad 5 c# sql-server datatable datarow dataset
嗨我目前正在使用返回dataTable的TableAdapter,当结果表应该有多个行时可以使用它,如:
MyItemsDataTable myItemsDataTable = Adapter.GetAllItems();
Run Code Online (Sandbox Code Playgroud)
但是如果我们只需要一行,那就说一个具有特定ID的项目
MyItemsDataSet.MyItemRow itemRow = Adapter.GetItemByID(id)[0];
Run Code Online (Sandbox Code Playgroud)
如何让Adapter返回一行而不是DataTable.我正在使用DataSet Designer向导,并为我提供了两个用于放入SELECT语句的选项
Use SQL statements --> Select which return rows
(returns one or many rows)
Use SQL statements --> Select which returns a single value rows
(returns a single value)
Run Code Online (Sandbox Code Playgroud)
并使用类似的查询
SELECT * from
FROM FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)
Run Code Online (Sandbox Code Playgroud)
我是否需要覆盖此方法或添加新方法?
public virtual MyItemsDataSet.MyItemsDataTable GetItemByID(int ITEM_ID)
Run Code Online (Sandbox Code Playgroud)
可能是这样的
public virtual MyItemsDataSet.MyItemRow GetItemByID(int ITEM_ID)
Run Code Online (Sandbox Code Playgroud)
如果是这样,我不能在设计器生成的文件中做到!! 我在哪里可以做到这一点?
谢谢
在数据集设计器中创建新的 Select 语句。使用Select which return rows
。然后使用以下查询:
SELECT TOP 1 * from
FROM FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)
Run Code Online (Sandbox Code Playgroud)
将此方法另存为GetFirstItemByID()
或类似的方法。
对于 Google 用户来说,许多非 MS 数据库(例如 MySQL)将使用以下语法:
SELECT * from
FROM FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)
LIMIT 1
Run Code Online (Sandbox Code Playgroud)