使用输出子句插入语句

时间:2015-06-17 14:57:02

标签: c# sql sql-server webmatrix

我有以下两个表:

Game_Information

gameId(PK) Is Identity(auto-increments)
gamePrice
name
edition
date

Game_Notes

noteId(PK) Is Identity(auto-increments)
notes
noteDate
gameId(FK)

我目前正在尝试在WebMatrix中编写一个cshtml页面,它允许我在两个表中添加有关我的游戏集合的信息,但是我无法让gameId在两个表中匹配,所以多个注释引用一个游戏。

我尝试了以下内容:

var id = db.Execute("INSERT INTO Game_Information (gamePrice, name, edition, addedDate) output Inserted.gameId VALUES (@0, @1, @2, @4)", gamePrice, name, edition, date); 

db.Execute("INSERT INTO Game_Notes(gameId, notes, noteDate) VALUES (@0, @1, @2)", id, notes, noteDate);

将信息放入所需的列,但插入Game_Notes的“gameId”始终默认为“1”,而不是新插入游戏的正确ID。

所以我尝试了以下内容:

db.Execute("INSERT INTO Game_Information (gamePrice, name, edition) output Inserted.gameId, Inserted.date INTO Game_Notes(gameId, noteDate) VALUES (@0, @1, @2)", gamePrice, name, edition); 

这会将正确的id插入“gameId”,因此两个表之间存在匹配,但现在我迷失了如何将“notes”变量放入同一行。做第二个插入显然已经完成并且在表的最后一行进行更新似乎不是一个明智的想法。

任何人都有关于我在这里可以做什么的任何提示?我正在考虑重组插入以适应Notes变量是关键,但我一直在它上面打一堵墙。

1 个答案:

答案 0 :(得分:2)

正如我所说Database.Execute方法返回受SQL statement影响的记录数。所以你插入一行并得到1

  

Execute方法用于在a上执行非查询命令   数据库,例如SQL Drop,Create,Delete,Update和Insert   命令。 Array.GetValue(long)

您需要Database.QueryValue方法来执行SQL查询,该查询返回单个标量值作为结果。

var id = db.QueryValue(...