C# 如何在T-SQL中将动态变量值放入双引号中

C# 如何在T-SQL中将动态变量值放入双引号中,c#,sql-server,tsql,C#,Sql Server,Tsql,我有以下行var examNumber=testExamData.examDetails.examNumber且其值为ABX0916 var examNumber = testExamData.examDetails.examNumber; con = new SqlConnection(connectionString); con.Open(); cmd = new SqlCommand("UPDATE [dbo].[Exams_Data] SET [Exam_Date] = DAT

我有以下行
var examNumber=testExamData.examDetails.examNumber且其值为ABX0916

var examNumber = testExamData.examDetails.examNumber;
con = new SqlConnection(connectionString);
con.Open();
cmd = new SqlCommand("UPDATE [dbo].[Exams_Data] SET [Exam_Date] = DATEADD(DAY, +90, GETDATE())" +
"WHERE [Status_ID] = 2 AND [Exam_Number] = " + @"" + examNumber + @"", con);
dr = cmd.ExecuteReader();
在上述代码中,
var examNumber
ABX0916。 然后在cmd中,commandText的值如下所示:

"UPDATE [dbo].[Exam_Data] SET [Exam_Date] = DATEADD(DAY, +90, GETDATE())WHERE [Status_ID] = 2 AND [Exam_Number] = ABX0916".
因为ABX0916是一个字符串,所以我希望它在要执行的SQL中使用双引号

下面是我想要执行的命令(ABX0916在双引号中)


如何正确地转义此
@“+examNumber+@”
以实现此目的?

使用参数……正如@MitchWheat所述,请使用参数。
如何
您不需要。SQL注入攻击就是这样发生的。如果
examNumber
包含
0;删除表格Examx_数据--?使用参数。实际上,使用参数化查询要容易得多,无论是单独使用ADO.NET,还是像Dapper这样的库,例如
con.Execute(“更新考试\数据集考试\日期=@Date,其中Status\u Id=@Id和考试\编号=@Number”,new{Date=DateTime.Today.AddDays(90),Id=2,Number=someNumber)
正如Mitch所说,您应该真正使用参数。但是,如果您想按原样使用SQL server中的字符串,您实际上需要单引号而不是双引号。@“”@Bee_Riii在这种情况下,
”;删除表检查数据;
。甚至还有
UPDATE [dbo].[Exam_Data] SET [Exam_Date] = DATEADD(DAY, +90, GETDATE())WHERE [Status_ID] = 2 AND [Exam_Number] = "ABX0916"