我想插入两个,但出了点问题

时间:2015-11-16 11:45:13

标签: c# sql

我想插入两张表,但出了点问题。 它返回以下消息:

  

其他信息:“' GO'。

附近的语法错误
con.Open();
SqlCommand cmd = new SqlCommand("SET IDENTITY_INSERT dbo.Tomasos ON;GO DECLARE @IDENTITY INT INSERT INTO Bestallning (BestallningDatum, Totalbelopp, Levererad, KundID) VALUES ('28-02-2014', '250', '1', '1') SELECT @IDENTITY = SCOPE_IDENTITY() INSERT INTO BestallningMatratt (MatrattID, BestallningID, Antal) VALUES ('1', @IDENTITY, '3') SET IDENTITY_INSERT dbo.Tomasos OFF; GO", con);
cmd.ExecuteNonQuery();
con.Close();

2 个答案:

答案 0 :(得分:2)

SET IDENTITY_INSERT dbo.Tomasos ON;

DECLARE @IDENTITY INT INSERT INTO Bestallning (BestallningDatum, Totalbelopp, Levererad, KundID) VALUES ('28-02-2014', '250', '1', '1')
SELECT @IDENTITY = SCOPE_IDENTITY()
INSERT INTO BestallningMatratt (MatrattID, BestallningID, Antal) VALUES ('1', @IDENTITY, '3') SET IDENTITY_INSERT dbo.Tomasos OFF;

我认为你不需要GO 最后我还认为你需要

SET IDENTITY_INSERT dbo.Tomasos OFF;

答案 1 :(得分:2)

go是一个批处理分隔符,在这里您没有需要单独执行的命令,因此您可以将它作为单个批处理执行:

con.Open();
SqlCommand cmd = new SqlCommand(@"SET IDENTITY_INSERT dbo.Tomasos ON;
DECLARE @IDENTITY INT;
INSERT INTO Bestallning 
  (BestallningDatum, Totalbelopp, Levererad, KundID) 
  VALUES 
  ('28-02-2014', '250', '1', '1');

SELECT @IDENTITY = SCOPE_IDENTITY();
INSERT INTO BestallningMatratt 
  (MatrattID, BestallningID, Antal) 
  VALUES 
  ('1', @IDENTITY, '3');
SET IDENTITY_INSERT dbo.Tomasos OFF;", con);
cmd.ExecuteNonQuery();
con.Close();

编辑:BTW查看值和字段名称,听起来有些值实际上不是字符串,但是你依赖隐式转换这是非常危险的。由于您使用的是C#,因此将真实数据类型的实际值作为参数传递会更容易,更安全(在现实生活中,无论如何都没有人会对值进行编码)。