星河与她皆是梦 2022-03-25 20:58 采纳率: 50%
浏览 30

语句添加案例,出现问题

问题遇到的现象和发生背景

做一个案例中出现了一个bug但是,我不清楚是怎么回事

问题相关代码,请勿粘贴截图
package com.shichuang.news.dao.Impl;

import com.mysql.jdbc.StringUtils;
import com.shichuang.news.dao.BillDao;
import com.shichuang.news.domain.Bill;
import com.shichuang.news.util.JDBCUtil;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class BillDaoImpl implements BillDao {
    JDBCUtil jdbcUtil=new JDBCUtil();
    @Override
    public List<Bill> getAllBill(String prodName, int gys1, int sffk1) {
        List<Object> para=new ArrayList<Object>();
        List<Bill> list=new ArrayList<Bill>();
        Connection conn = jdbcUtil.getConn();
        /*String sql="SELECT id,billCode,productName,productDesc,totalPrice,isPayment,creationDate FROM smbms_bill;";*/
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            StringBuffer sb=new StringBuffer();
            sb.append("select b.id,b.billCode,b.productName,p.proName,b.totalPrice,b.isPayment,b.creationDate");
            sb.append(" from smbms_bill b,smbms_provider p");
            sb.append(" where b.providerId=p.id");

            if (gys1!=0){
                sb.append(" and b.providerId=?");
                para.add(gys1);
            }
            if (sffk1!=0){
                sb.append(" and b.isPayment=?");
                para.add(sffk1);
            }
            if (!StringUtils.isNullOrEmpty(prodName)){
             sb.append(" and b.productName=?");
//            para.add("%"+prodName+"%");
//                para.add("%大豆油%");
            }
            pst = conn.prepareStatement(sb.toString());
            System.out.println(sb.toString());
            for (int i = 0; i < para.size(); i++) {
                pst.setObject(i+1,para.get(i));

            }
             rs = pst.executeQuery();
            //System.out.println(rs.next());
             while (rs.next()){
                 int id = rs.getInt("id");
                 System.out.println(id);
                 String billCode = rs.getString("billCode");
                 String produName = rs.getString("productName");
                 double totalPrice = rs.getDouble("totalPrice");
                 int isPayment = rs.getInt("isPayment");
                 Date creationDate = rs.getDate("creationDate");
                 String proName = rs.getString("proName");
                 Bill bill=new Bill();
                 bill.setId(id);
                 bill.setBillCode(billCode);
                 bill.setProductName(produName);
                 bill.setProName(proName);
                 bill.setTotalPrice(totalPrice);
                 bill.setIsPayment(isPayment);
                 bill.setCreationDate(creationDate);
                 list.add(bill);

             }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            jdbcUtil.closeAll(rs,pst,conn);
        }
        return list;
    }
}


package com.shichuang.news;

import com.shichuang.news.dao.BillDao;
import com.shichuang.news.dao.Impl.BillDaoImpl;
import com.shichuang.news.dao.Impl.ProviderDaoImpl;
import com.shichuang.news.domain.Bill;
import com.shichuang.news.domain.Provider;

import java.text.ParseException;
import java.util.List;

public class test {
    public static void main(String[] args) throws ParseException {
        BillDaoImpl bs=new BillDaoImpl();
        List<Bill> allBill = bs.getAllBill("大豆油",6,2);
        for (Bill bill : allBill) {
            System.out.println(bill);
        }

    }
}


运行结果及报错内容

只要有这个代码,查询结果就显示不出来,如果把该代码注销,那么查询结果就会在控制台输出

  if (!StringUtils.isNullOrEmpty(prodName)){
             sb.append(" and b.productName=?");
//            para.add("%"+prodName+"%");
//                para.add("%大豆油%");
            }
我的解答思路和尝试过的方法

已经尝试分别注销3个if语句,最后得出最后一个if语句出现问题

我想要达到的结果

我想要有该代码也能在控制台输出

  • 写回答

1条回答 默认 最新

  • gitcat熊 2022-03-26 09:58
    关注

    你加了百分号是想用like查吧,你写的是 and b.productName=?

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日

悬赏问题

  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档