EdX*_*dXX 2 java oracle parameters prepared-statement
我与 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();
};
Run Code Online (Sandbox Code Playgroud)
问题是第二个参数像我想要的那样传递,这意味着
供应商 ID = 1
但我的第一个参数有问题。每次只传递字符串,所以我的查询看起来像
选择“supplier_id”,supplier_name FROM 供应商 WHERE supply_id = ?
代替
选择供应商 ID,供应商名称 FROM 供应商 WHERE 供应商 ID = ?
因此,我没有从与供应商 ID 相关的表中获取值,而是从字符串“供应商 ID”中获取值。我究竟做错了什么?我应该更改什么才能获得不是字符串的值?
不可能以这种方式创建动态查询,您必须使用普通的字符串操作。参数只能用于值,如字符串、数字等,不能用于名称。
在你的情况下,可以做类似的事情
String sqlTemplate = "SELECT <id_column>,supplier_name FROM supplier WHERE supplier_id = ?";
String selectSQL = sqlTemplate.replace("<id_column>", "supplier_id");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5073 次 |
| 最近记录: |