Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用带有单引号(')的字符串作为参数我想在C中使用select查询,如下所示_C#_Sql_Asp.net - Fatal编程技术网

C# 如何使用带有单引号(')的字符串作为参数我想在C中使用select查询,如下所示

C# 如何使用带有单引号(')的字符串作为参数我想在C中使用select查询,如下所示,c#,sql,asp.net,C#,Sql,Asp.net,字符串ContractListst='1','2','3','4' 字符串查询=从tbl_合同中选择V_名称、I_ID,其中V_名称位于@ContractList中 cmd。AddWithValue@ContractList,合约专家 我希望三个被视为一个字符串,忽略单个引号 注意:我从另一个函数得到的合同列表有两件事 首先,当您在C中没有引用问题时,您会发现结果SQL中存在引用问题。所以你必须避开这句话。在SQL中,一行中有两个单引号: String ContractListst = "'on

字符串ContractListst='1','2','3','4'

字符串查询=从tbl_合同中选择V_名称、I_ID,其中V_名称位于@ContractList中

cmd。AddWithValue@ContractList,合约专家

我希望三个被视为一个字符串,忽略单个引号

注意:我从另一个函数得到的合同列表有两件事

首先,当您在C中没有引用问题时,您会发现结果SQL中存在引用问题。所以你必须避开这句话。在SQL中,一行中有两个单引号:

String ContractListst = "'one','two','Three''s','four'";
第二,虽然我对您使用查询参数表示赞赏,但很多人根本不使用它们,但在这种情况下,这是行不通的。它们可以很好地处理单个值,但IN子句是一个完整的子句,而不仅仅是一个值。因此,在这种情况下,您必须手动构建它:

String query = "select V_name,I_ID from tbl_Contract where V_name in (" + ContractListst + ")";
或者使用string.Format,或者使用StringBuilder,有多种方法可以做到这一点,为了简洁起见,我在这里使用了最直接的方法


当然,如果您对IN子句的用户输入执行此操作,请非常小心。我很确定已经存在堆栈溢出问题,其中讨论了如何正确处理无法参数化的子句中的用户输入。

您需要手动构建和转义in子句,将其替换为2x,并将其插入SQL字符串中,因为in子句无法参数化或使用@p1、@p2、,@p3。你必须使用动态sql才能使in子句包含变量。我不能用两个单引号,因为我的字符串是由函数生成的。还有其他方法吗this@NiranjanMD:您必须修改该函数才能生成有效的SQL代码。问题不在于如何在C中实现这一点,而在于创建有效的SQL代码以发送到SQL server。无论您决定如何组织代码,生成的字符串都必须是有效的SQL。谢谢David,这就是我生成字符串ContractListst='+ContractList.Aggregatex,y=>x+,'+y+'的方式;其中ContractList是包含字符串的列表。您能给我建议一种生成可以传递给Sql的字符串的正确方法吗Server@NiranjanMD:您可以尝试在列表上循环,而不是使用聚合,并在该循环中对字符串进行一些清理。在这种特定情况下,将字符串.Replace从单引号替换为双引号就可以了。但您可能想查看ADO.NET,看看是否有一个内置函数可以返回转义字符串。@NiranjanMD我也遇到了同样的问题。你有什么解决办法吗