String ContractListst =“'one','two',' Three's ','four'”;
String query =“select t_name,I_ID from tbl_Contract其中V_name in(@ContractList)”;
cmd.AddWithValue(“@ ContractList”,ContractListst);
我希望三个被视为忽略单引号的一个字符串
注意:我从另一个函数获取ContractList
答案 0 :(得分:2)
两件事......
首先,虽然您在C#中没有引用问题,但是您发现结果SQL中存在引用问题。所以你必须逃避报价。在SQL中,通过连续使用两个单引号来完成:
NSString *recipient =textField.text;
NSArray *recipients = [NSArray arrayWithObjects:recipient, nil];
其次,虽然我赞赏你使用查询参数(很多人根本不使用它们),但在这种情况下这不会起作用。它们适用于单个值,但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
子句的用户输入执行此操作,会非常小心。 (我很确定存在Stack Overflow问题,讨论如何在一个无法参数化的子句中正确处理用户输入。)