我如何使用一个具有单引号(';)作为参数的字符串?我想在C#中使用一个选择查询,如下所示

本文关键字:一个 查询 选择 单引号 何使用 字符串 参数 | 更新日期: 2023-09-27 18:16:49

String ContractListst="'one','wo','三个','fur'";

字符串查询="从tbl_Contract中选择V_name,I_ID,其中V_name在(@ContractList(中";

cmd.AddWithValue("@ContractList",ContractListst(;

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

注意:ContractList正在从另一个函数中获取

我如何使用一个具有单引号(';)作为参数的字符串?我想在C#中使用一个选择查询,如下所示

两件事。。。

首先,当您在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子句的用户输入执行此操作,请非常小心。(我很确定已经存在Stack Overflow问题,这些问题讨论了如何正确处理不能参数化的子句中的用户输入。(