C# 通过显示错误的查询传递单引号

C# 通过显示错误的查询传递单引号,c#,sql,C#,Sql,上面的查询显示错误,因为它缺少分号。“;如何传递此查询的单引号 您需要将单个报价加倍。你的每一个单引号之前都需要另一个单引号 对您的查询的简单更正是: string query = "Select * from getLabelDetails where itemlookupCode='"+S"';"; 但这会导致,我更希望您使用它来避免SQL注入 您可以执行以下操作: string query = "Select * from getLabelDetails where itemlookup

上面的查询显示错误,因为它缺少分号。“;如何传递此查询的单引号

您需要将单个报价加倍。你的每一个单引号之前都需要另一个单引号

对您的查询的简单更正是:

string query = "Select * from getLabelDetails where itemlookupCode='"+S"';";
但这会导致,我更希望您使用它来避免SQL注入

您可以执行以下操作:

string query = "Select * from getLabelDetails where itemlookupCode='" + S +"'";

你需要另一个报价。尝试:

String sql = "Select * from getLabelDetails where itemlookupCode=@foo";
using (SqlConnection cn = new SqlConnection("Your connection string here")) 
   {
   using (SqlCommand cmd = new SqlCommand(sql, cn)) 
      {
        cmd.Parameters.Add("@foo", SqlDbType.VarChar, 50).Value = Baz;
        //execute command here
      }
   }
从C 6.0开始,您还可以尝试字符串插值:

string query = "Select * from getLabelDetails where itemlookupCode='" + S +"'";

你错过了一个+。它应该是:其中itemlookupCode='+S+'。这种字符串连接也可以用于SQL注入。尝试改用参数。您想转义引号。字符串查询=从getLabelDetails中选择*,其中itemLookupCode=\+s+\;;我很惊讶它甚至可以编译-您缺少了S和';-itemlookupCode='+S+';;如果您以这种方式格式化SQL,您的程序将面临攻击……您提供的代码片段将无法编译。此外,您没有给出错误是什么或在哪里看到的任何指示。如果你解决了这些问题,帮助你会更容易。这有点难说,但我不确定这是否是这种情况下的问题。如果他试图使用动态SQL,那么是的。但是,如果这只是一个被传递到SqlCommand中的C字符串,那么我认为您的答案不适用。我想您可能是对的,但毕竟,此查询在SqlCommand中传递,该命令将应用于数据库中,因此所有规则应保持不变。您计划如何处理Sql注入问题没有询问在C中执行查询的最佳做法。它询问如何在字符串中转义变量。我觉得有趣的是,这个答案因为没有解决SQL注入问题而被否决,而不是本文中列出完全相同答案的另一个答案。
string query = $"Select * from getLabelDetails where itemlookupCode='{S}';"; 
var s = "something";
string query = "Select * from getLabelDetails where itemlookupCode=\'"+ s +"\';";