Java 如何在预置语句中设置列表

Java 如何在预置语句中设置列表,java,prepared-statement,Java,Prepared Statement,如何在准备好的语句中设置列表(statement.setString(1,productCode);)。 请参阅下面我的代码片段 谢谢 public static List<Message> listAllWonBids(List<Message> productCode, Connection connection) { List<Message> winners = new ArrayList<Message>();

如何在准备好的语句中设置列表(statement.setString(1,productCode);)。 请参阅下面我的代码片段

谢谢

public static List<Message> listAllWonBids(List<Message> productCode,
    Connection connection) {

    List<Message> winners = new ArrayList<Message>();

    String sql = "SELECT b.`id`, b.`msisdn` as msisdn ,b.`productname` as productname, b.`productcode` as productcode, max(b.`amount`) as amount FROM  "
        + TableNames.SAVEDBIDSTABLE
        + " b where productcode = ? "
        + " group by amount order by productcode, amount  desc limit 1";

    PreparedStatement statement = null;
    ResultSet resultSet = null;

    try {
        LOGGER.info(sql);

        if (connection == null || connection.isClosed())
            connection = DBConnection.getConnection();

        statement = connection.prepareStatement(sql);

        **statement.setString(1, productCode);** 

        resultSet = statement.executeQuery();
公共静态列表listAllWonBids(列表产品代码,
连接(连接){
列出获奖者=新建ArrayList();
String sql=“选择b.`id`,b.`msisdn`作为msisdn,b.`productname`作为productname,b.`productcode`作为productcode,max(b.`amount`)作为其中的金额”
+TableNames.SAVEDBIDSTABLE
+“b其中productcode=?”
+“按产品代码按金额订单分组,金额描述限额1”;
PreparedStatement=null;
ResultSet ResultSet=null;
试一试{
LOGGER.info(sql);
if(connection==null | | connection.isClosed())
connection=DBConnection.getConnection();
语句=connection.prepareStatement(sql);
**语句.setString(1,产品代码);**
resultSet=statement.executeQuery();
注意:productCode来自下面显示的另一个列表

public static List<Message> allProductCode(Connection connection) {
    List<Message> productcodes = new ArrayList<Message>();

    PreparedStatement statement = null;
    ResultSet resultSet = null;

    String sql = "SELECT `productCode` FROM " + TableNames.AUCTIONTABLE1
        + " WHERE date(`endDate`) = curdate() order by `id` desc";
公共静态列表allProductCode(连接){
List productcodes=new ArrayList();
PreparedStatement=null;
ResultSet ResultSet=null;
String sql=“从”+TableNames.AUCTIONTABLE1中选择`productCode`”
+“其中date(`endDate`)=curdate()按`id`desc'排序”;

这是不可能的,您可以使用IN以编程方式生成where子句

"where productcode in (" + listToStringEncoding + ")"
或者在列表上循环并多次调用该语句


另一种可能是连接两条语句…

,这是不可能的,您可以使用IN以编程方式生成where子句

"where productcode in (" + listToStringEncoding + ")"
或者在列表上循环并多次调用该语句


另一种可能是连接两条语句…

,这是不可能的,您可以使用IN以编程方式生成where子句

"where productcode in (" + listToStringEncoding + ")"
或者在列表上循环并多次调用该语句


另一种可能是连接两条语句…

,这是不可能的,您可以使用IN以编程方式生成where子句

"where productcode in (" + listToStringEncoding + ")"
或者在列表上循环并多次调用该语句


另一种可能是将这两个语句连接起来…

您可以将这两个查询组合起来。例如:

String sql = "SELECT b.`id`, b.`msisdn` as msisdn ,b.`productname` as productname, b.`productcode` as productcode, max(b.`amount`) as amount FROM  " 
+ TableNames.SAVEDBIDSTABLE + " b where productcode in (SELECT `productCode` FROM " 
+ TableNames.AUCTIONTABLE1 + " WHERE date(`endDate`) = curdate() order by `id` desc) group by amount order by productcode, amount  desc limit 1";

这样,您就不需要任何参数了。您可以将这两个查询组合起来。例如:

String sql = "SELECT b.`id`, b.`msisdn` as msisdn ,b.`productname` as productname, b.`productcode` as productcode, max(b.`amount`) as amount FROM  " 
+ TableNames.SAVEDBIDSTABLE + " b where productcode in (SELECT `productCode` FROM " 
+ TableNames.AUCTIONTABLE1 + " WHERE date(`endDate`) = curdate() order by `id` desc) group by amount order by productcode, amount  desc limit 1";

这样,您就不需要任何参数了。您可以将这两个查询组合起来。例如:

String sql = "SELECT b.`id`, b.`msisdn` as msisdn ,b.`productname` as productname, b.`productcode` as productcode, max(b.`amount`) as amount FROM  " 
+ TableNames.SAVEDBIDSTABLE + " b where productcode in (SELECT `productCode` FROM " 
+ TableNames.AUCTIONTABLE1 + " WHERE date(`endDate`) = curdate() order by `id` desc) group by amount order by productcode, amount  desc limit 1";

这样,您就不需要任何参数了。您可以将这两个查询组合起来。例如:

String sql = "SELECT b.`id`, b.`msisdn` as msisdn ,b.`productname` as productname, b.`productcode` as productcode, max(b.`amount`) as amount FROM  " 
+ TableNames.SAVEDBIDSTABLE + " b where productcode in (SELECT `productCode` FROM " 
+ TableNames.AUCTIONTABLE1 + " WHERE date(`endDate`) = curdate() order by `id` desc) group by amount order by productcode, amount  desc limit 1";

那么你就不需要任何参数了

这个问题中的答案可能会有帮助:这个问题中的答案可能会有帮助:这个问题中的答案可能会有帮助:这个问题中的答案可能会有帮助:谢谢gerritCap,让我按上面的方式尝试。谢谢gerritCap,让我按上面的方式尝试。谢谢gerritCap,让我按上面的方式尝试y如上所述。谢谢spoon先生,上述查询有效,但列出了所有产品代码。我想获得每个产品代码的最大金额,这就是为什么我限制为1(表示每个产品代码的最大金额)。也许你有不同的方法来实现这一点。谢谢你。谢谢你。谢谢你。上面的查询有效,但列出了所有产品代码。我想获得每个产品代码的最大金额,这就是为什么我限制为1(意味着每个产品代码的最大金额)。也许你有不同的方法来实现这一点。谢谢你。谢谢你。谢谢你。上面的查询有效,但列出了所有产品代码。我想获得每个产品代码的最大金额,这就是为什么我限制为1(意味着每个产品代码的最大金额)。也许你有不同的方法来实现这一点。谢谢。谢谢。谢谢。谢谢。汤匙先生,上面的查询有效,但列出了所有产品代码。我想获得每个产品代码的最大金额,这就是为什么我限制为1(指每个产品代码的最大金额)。也许你有不同的方法来实现这一点。谢谢