gpt4 book ai didi

java - 选择查询中的 JDBCPreparedStatement 和参数 (?)

转载 作者:行者123 更新时间:2023-12-01 18:16:29 24 4
gpt4 key购买 nike

我与 Oracle 数据库的连接如下:

String selectSQL = "SELECT ?,supplier_name FROM supplier WHERE supplier_id = ?";
PreparedStatement preparedStatement = con.prepareStatement(selectSQL);
preparedStatement.setString(1, "supplier_id");
preparedStatement.setInt(2, 1);
ResultSet rs2 = preparedStatement.executeQuery();

while (rs2.next()) {
String userid = rs2.getString(1);
String username = rs2.getString(2);
System.out.println(userid);
System.out.println(username);
}
con.close();
};

问题是第二个参数按照我想要的方式传递,这意味着

supplier_id = 1

但是我对第一个参数有疑问。每次只传递字符串,所以我的查询看起来像

select "supplier_id", supplier_name FROM supplier WHERE supplier_id = ?

而不是

select supplier_id, supplier_name FROM supplier WHERE supplier_id = ?

因此,我没有从表中获取对应供应商 ID 的值,而是获取字符串“supplier_id”。我究竟做错了什么?我应该改变什么来获取值而不是字符串?

最佳答案

无法以这种方式创建动态查询,您必须使用普通的字符串操作。参数只能用于值,如字符串、数字等,不能用于名称。

在你的情况下,可以做类似的事情

String sqlTemplate = "SELECT <id_column>,supplier_name FROM supplier WHERE supplier_id = ?";
String selectSQL = sqlTemplate.replace("<id_column>", "supplier_id");

关于java - 选择查询中的 JDBCPreparedStatement 和参数 (?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60353940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com