我使用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)
它返回int
而不是预期的DataRow
或DataTable
,也不会将DataTable
作为参数插入其中。
我做错了吗?我该如何实现此功能?
答案 0 :(得分:1)
答案是否定的,因为insert方法使用ExcecuteNonQuery
的{{1}}方法,这就是为什么你的insert方法返回ADO.NET
并插入记录的id。
您可以在插入后尝试查询int
之类的内容,这样您就可以稍后获取记录。