我想插入两张表,但出了点问题。 它返回以下消息:
其他信息:“' 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();
答案 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#,因此将真实数据类型的实际值作为参数传递会更容易,更安全(在现实生活中,无论如何都没有人会对值进行编码)。