C# C语言中的SQL语法#

C# C语言中的SQL语法#,c#,sql,C#,Sql,我试图理解为什么在C中#如果您有一个sql字符串,为什么您必须在下面的where子句中添加勾号(')标记才能使其工作。有人能解释一下这背后的原因吗 where ProgramServer='" + machineName.ToString() + "' and Active=1; 您可以避免那些勾号(”)标记,并使用它们,它们还可以将您从 您看到这些记号的原因是SQL希望字符串类型值包含在单个记号中 您看到的是代码中动态构建的SQL查询。基于字符串值进行查询时,字符串必须用单引号括起来。最后一

我试图理解为什么在C中#如果您有一个sql字符串,为什么您必须在下面的where子句中添加勾号(')标记才能使其工作。有人能解释一下这背后的原因吗

where ProgramServer='" + machineName.ToString() + "' and Active=1;
您可以避免那些勾号(
)标记,并使用它们,它们还可以将您从


您看到这些记号的原因是SQL希望字符串类型值包含在单个记号中

您看到的是代码中动态构建的SQL查询。基于字符串值进行查询时,字符串必须用单引号括起来。最后一个SQL字符串如下所示:

select * from someTable where ProgramServer = 'YourMachineName' and Active = 1;
不幸的是,这远远不是做事情的最佳方式。您应该改用参数化查询:

var query = "select * from someTable where ProgramServer = @machineName and Active = 1;";
using(var conn = new SqlConnection(connString))
{
    var command = new SqlCommand(query, conn);
    command.Parameters.Add("machineName", machineName.ToString());
    // Execute and get the results
}

你能展示一下周围的代码吗?这是较大字符串的子字符串吗?单刻度是TSQL字符串除味器谢谢。我遇到的问题是machineName是字符串machineName=System.Net.Dns.GetHostName()中定义的变量;当machineName不在表中作为列,而ProgramServer是列时,我不确定如何使其工作。我需要将console应用程序将要运行的机器名拉到上面进一步解释,ProgId将按机器名存储当前运行的所有已定义应用程序。这就是为什么我需要获取应用程序的机器名。