当前位置:  开发笔记 > 编程语言 > 正文

C#参数化查询MySQL带有`in`子句

如何解决《C#参数化查询MySQL带有`in`子句》经验,为你挑选了1个好方法。

我正在将几个硬编码的查询转换为应用程序并立即构建到参数化查询.我遇到一个特定查询的问题,它有一个in子句:

UPDATE TABLE_1 SET STATUS = 4 WHERE ID IN (1, 14, 145, 43);

第一个参数很简单,因为它只是一个普通的参数:

MySqlCommand m = new MySqlCommand("UPDATE TABLE_1 SET STATUS = ? WHERE ID IN (?);");
m.Parameters.Add(new MySqlParameter("", 2));

但是,第二个参数是一个整数列表,表示需要更新的行的ID.如何传递单个参数的整数列表?或者,您将如何设置此查询,以便您不必在每次调用它时完全构建它,并且可以防止SQL注入攻击?



1> Andrey Shche..:

这在MySQL中是不可能的.您可以创建所需数量的参数并执行UPDATE ... IN(?,?,?,?).这可以防止注入攻击(但仍然需要您为每个参数计数重建查询).

其他方法是传递逗号分隔的字符串并解析它.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有