如何使用Java在sql查询中传递多个参数?

问题描述

我有一个 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();