C# 传递字符串参数时“S”附近的语法不正确

C# 传递字符串参数时“S”附近的语法不正确,c#,syntax-error,sqlcmd,C#,Syntax Error,Sqlcmd,在c中,我有以下代码行: string mySqlStmt = "SELECT CASE WHEN (SELECT COUNT(*) FROM tlGenericName WHERE ( UPPER(ltrim(rtrim(genericName_str))) = '" + this.cmbGenericName.Text.Trim().ToUpper() + "' ) ) > 0 THEN" + " ( SELECT top(1) isnull(genericNameCode_

在c中,我有以下代码行:

 string mySqlStmt = "SELECT CASE WHEN (SELECT COUNT(*)  FROM tlGenericName WHERE ( UPPER(ltrim(rtrim(genericName_str))) = '" + this.cmbGenericName.Text.Trim().ToUpper() + "' ) ) > 0 THEN"
   + " ( SELECT top(1) isnull(genericNameCode_str, '') FROM tlGenericName "
       + " WHERE ( UPPER(ltrim(rtrim(genericName_str))) = '" + this.cmbGenericName.Text.Trim().ToUpper() + "' )  ) ELSE '' END";
然后,我在c中使用一个SqlCommand来表示executeScalar。 但是,我得到以下错误:

Incorrect syntax near 'S'
我注意到,对于某些记录,参数值出现中断;例如:

'绷带p.O.p.卷1型;200MMX2.7M 12'

如何在designer c中安全地传递Sql中的字符串参数?

对单引号进行转义,如下所示:

this.cmbGenericName.Text.Trim().ToUpper().Replace("'", "''")

另外,正如Peter在评论中提到的,建议避免使用内联SQL语句,以避免使用及其

尝试使用字符串插值:

var number = 2;
var exampleString = $"Number is : {number}";

字符串文本中的引号必须加倍,IIRC。必须使用SqlParameter才能对查询进行参数化。下面是一个简单的感谢您给出的正确答案:这正是我不想使用SqlParameter在查询中进行参数化时所需要的。我已标记为答案。很高兴知道: