问题描述
我有一个 sql 查询,它显示在它的一个 select 语句下面我想动态传递值,但我不知道我们该怎么做。这里我想动态传递产品和位置 任何人都可以帮忙吗..
public static ResultSet RetrieveData() throws Exception {
PreparedStatement statement;
String sql = "select * FROM Courses WHERE "
+ "product = product? "
+ "and location = location? ";
System.out.println(sql);
DriverManager.registerDriver(new com.MysqL.cj.jdbc.Driver());
String MysqLUrl = "jdbc:MysqL://localhost:3306/wave1_build";
Connection con = DriverManager.getConnection(MysqLUrl,"root","root");
statement = con.prepareStatement(sql);
ResultSet rs = statement.executeQuery(sql);
return rs;
解决方法
一种方法是使用普通的 ?
占位符和适当的 setter 来绑定值:
String sql = "SELECT * FROM Courses WHERE product = ? AND location = ?";
statement = con.prepareStatement(sql);
statement.setString(1,"some product");
statement.setString(2,"some location");
// NOTE: executeQuery() when used with prepared statements does NOT take any parameters
ResultSet rs = statement.executeQuery();