参数未在Java中执行的PreparedStatement最大查询

时间:2017-05-02 12:30:02

标签: java mysql swing jdbc prepared-statement

我正在尝试执行Biggest SQL并使用6个日期参数并在JTable中显示,但它不执行,我不知道实际问题是什么。

但令人困惑的是我能够使用Statement界面使用固定参数执行相同的查询并在JTable中显示,但无法使用PreparedStatement显示

我的源代码:

public String start_date;
    public String end_date;

    public void getMonthWithDropCombobox()
    {
        if(month_sands.getSelectedIndex() != -1){
            int monthnumber = month_sands.getSelectedIndex() + 1;

             if(monthnumber>=9)
             {
                 month=String.valueOf(monthnumber);

             }else
             {
                 month="0"+String.valueOf(monthnumber);
             }

        }

        String dateString = year_sands.getSelectedItem().toString()+"-"+month+"-"+"01";   
        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.US); 
        LocalDate date = LocalDate.parse(dateString, dateFormat);
        LocalDate startDate=date.withDayOfMonth(1);
        LocalDate endDate = date.withDayOfMonth(date.getMonth().maxLength());

        start_date=startDate.toString();
        end_date=endDate.toString();


    }

    public void getAllVendorDetails()
    {
        getMonthWithDropCombobox();

        StockAndSales sas1=new StockAndSales();
        if(company_dropdown_sas.getSelectedItem().equals("View All Vendors"))
        {

            try {


                String totalStockAndSales="select '' as Vendor_Company, '', product, price,sellprice, openingstock as openingStock, "
                + "openingstock*price as op_value, receipts as receipts, receipts*price as re_value, totalstock as totalstock, "
                + "totalstock*price as ts_value, sales as sales, sales*sellprice as s_value, return as returns,return*sellprice "
                + "as rt_value, closingstock as closingstock, closingstock*price as cl_value from purchase_table where date "

                + "between ? and ? "

                + "union all select orgname , 'TOTAL', '', sum(price),sum(sellprice), sum(openingstock) as openingStock, "
                + "sum(openingstock*price) as op_value, sum(receipts) as receipts, sum(receipts*price) as re_value, sum(totalstock) "
                + "as totalstock, sum(totalstock*price) as ts_value, sum(sales) as sales, sum(sales*sellprice) as s_value, sum(return) "
                + "as returns,sum(return*sellprice) as rt_value, sum(closingstock) as closingstock, sum(closingstock*price) as cl_value "
                + "from purchase_table where date "

                + "between ? and ? "

                + "group by orgname union all select 'Grand Total' , '', '',sum(price),sum(sellprice), sum(openingstock) as "
                + "openingStock, sum(openingstock*price) as op_value, sum(receipts) as receipts, sum(receipts*price) as re_value, "
                + "sum(totalstock) as totalstock, sum(totalstock*price) as ts_value, sum(sales) as sales, sum(sales*sellprice) as "
                + "s_value, sum(return) as returns,sum(return*sellprice) as rt_value, sum(closingstock) as closingstock, "
                + "sum(closingstock*price) as cl_value from purchase_table where date "

                + "between ? and ? "

                + "orde0r by closingstock asc";



            PreparedStatement ps_tsas=connection.prepareStatement(totalStockAndSales);
            ps_tsas.setString(1, start_date);
            ps_tsas.setString(2, end_date);
            ps_tsas.setString(3, start_date);
            ps_tsas.setString(4, end_date);
            ps_tsas.setString(5,start_date);
            ps_tsas.setString(6, end_date);

            ResultSet set_tsas=ps_tsas.executeQuery();
            sas1.table_sas.setModel(DbUtils.resultSetToTableModel(set_tsas));
            sas1.show_month_year_sas.setText("All Vendors Stock and Sales");
            sas1.name_of_user.setText(user_name_display.getText());
            sas1.setVisible(true);
            return;
        } catch (Exception e) {
            // TODO: handle exception
        }
        }

    }

1 个答案:

答案 0 :(得分:2)

而不是setString()日期有setDate()

ps_tsas.setDate(1, java.sql.Date.valueOf(start_date));

实际日期示例:

ps_tsas.setDate(1, java.sql.Date.valueOf("2017-05-22"));

其他日期也一样。