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"