C# 传递字符串参数时“S”附近的语法不正确
在c中,我有以下代码行: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_
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在查询中进行参数化时所需要的。我已标记为答案。很高兴知道: