我正试图插入两个,但出了问题

本文关键字:两个 问题 插入 | 更新日期: 2023-09-27 18:22:01

我正在字符串中插入两个表,但出现了问题。它返回以下消息:

附加信息:"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();

我正试图插入两个,但出了问题

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最后我还认为你需要

设置IDENTITY_INSERT dbo。托马索斯关闭;

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();

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