0

我只使用 VS2012 express(我正在使用 localdb)为我的应用程序创建了整个数据库,因此它处理了创建数据库以及创建数据集和表适配器以供我的应用程序使用。到目前为止,它工作得很好。我还制作了包装类以允许异步数据库读取,这也很有效。

在设计器中查看我的表适配器,当我添加我的插入方法(例如在Races表上)时,它使用了以下查询:

INSERT INTO Races (ChampionshipID, Driver1, Driver2, RaceTime)
VALUES        (@ChampionshipID,@Driver1,@Driver2,@RaceTime); 
SELECT ID, ChampionshipID, Driver1, Driver2, RaceTime FROM Races WHERE (ID = SCOPE_IDENTITY())

我看到它之后会进行选择以返回刚刚插入的行。这非常适合我的需要。但是,它生成的实际方法具有以下签名:

int Insert1(long ChampionshipID, long Driver1, long Driver2, DateTime RaceTime)

它返回的是 anint而不是预期的DataRowor DataTable,也没有将 aDataTable作为参数插入。

难道我做错了什么?我怎样才能实现这个功能?

4

1 回答 1

1

答案是否定的,因为 insert 方法使用 的ExcecuteNonQuery方法ADO.NET,这就是为什么您的 insert 方法返回int带有插入记录的 id 的原因。

您可以尝试select @@identity在插入后查询某些内容,以便稍后获取记录。

于 2014-01-25T22:26:14.953 回答