gpt4 book ai didi

mysql - PreparedStatement : Can I supply the column name as parameter?

转载 作者:行者123 更新时间:2023-11-29 01:34:15 25 4
gpt4 key购买 nike

假设我有一个包含 3 列的表:C1、C2、C3

我根据 C1 列进行搜索。我可以做类似这样的东西吗(这不起作用 - 因为这不是它使用 prepareStatement 的方式:))

String c;// the name of the column

...
String sql = "select * from table where ? = ?";
pre = con.prepareStatement(sql);
pre.setString(1, c);
pre.setString(1, i);
rs = pre.executeQuery();

主要思想是,我不希望每一列都有 3 个 if。一个优雅的解决方案?

最佳答案

这行不通。 prepare 语句解析 SQL,发送到数据库进行验证和编译。如果问号可以替代部分 SQL,那么您将失去绑定(bind)变量的全部要点 - 速度和安全性。您将重新引入 SQL 注入(inject),并且必须为所有参数重新编译语句。

不会像 SELECT * FROM table WHERE c1 = 这样的东西吗?或者 c2 = ?或者 c3 = ? 更好(当然取决于索引和表大小)。

关于mysql - PreparedStatement : Can I supply the column name as parameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514981/

25 4 0