Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么日期格式填充不正确?_Java_Swing_Odbc - Fatal编程技术网

Java 为什么日期格式填充不正确?

Java 为什么日期格式填充不正确?,java,swing,odbc,Java,Swing,Odbc,我已从数据库填充了JTable。所有数据都已正确填充。但供应日期看起来不正确。有人能告诉我我做错了什么吗?提前谢谢。 这是我填充Jtable的源代码 Date date1 = dateChooser_3.getDate(); SimpleDateFormat formatter = new SimpleDateFormat("MM-dd-yyyy"); fromdate = formatter.format(date1); Date date2 = dateChooser_4.getDate(

我已从数据库填充了JTable。所有数据都已正确填充。但供应日期看起来不正确。有人能告诉我我做错了什么吗?提前谢谢。

这是我填充Jtable的源代码

Date date1 = dateChooser_3.getDate();
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
fromdate = formatter.format(date1);
Date date2 = dateChooser_4.getDate();
todate = formatter.format(date2);
supplier = ((String)comboBox.getSelectedItem());

System.out.println(fromdate+"\t"+todate+"\t"+supplier);

double[] total = new double[100];
Date[] date = new Date[100];
int i = 0;
try
{
    String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=c:\\db.accdb";
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection(url);

    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("select id,Rate,MilkSupplied,DateofSupply FROM records WHERE (((DateofSupply) Between #"+fromdate+"# And #"+todate+"#)) AND CustName='"+supplier+"'");

    while (rs.next())
    {
         total[i] = (rs.getDouble("MilkSupplied") *rs.getDouble("Rate"));
         date[i] = rs.getDate("DateofSupply");
         System.out.println(total[i]+"\n"+date[i]+"\n"+i);
         i++;
    }

    int j = 0;
    while (j < i)
    {
         System.out.println("\n"+total[j]+"\n"+date[j]+"\n"+j);
         st.executeUpdate("Update records SET Total='"+total[j]+"'WHERE DateofSupply=#"+date[j]+"# ");
         j++;
    }
    con.commit();                          

    String sql1 ="SELECT CustName,MilkSupplied,DateofSupply,FAT,TimeofSubmit,Rate,Total FROM records WHERE (((DateofSupply) Between #"+fromdate+"# And #"+todate+"#)) AND CustName='"+supplier+"'";
    PreparedStatement pst = con.prepareStatement(sql1);
    ResultSet rs2 = pst.executeQuery();

    table.setModel(DbUtils.resultSetToTableModel(rs2));                        
    dtm =table.getModel();

    String sql2 ="SELECT SUM(Total) FROM records WHERE (((DateofSupply) Between #"+fromdate+"# And #"+todate+"#)) AND CustName='" +supplier+"'";
    PreparedStatement pst2 = con.prepareStatement(sql2);
    ResultSet rs3 = pst2.executeQuery();

    if (rs3.next())
    {
       Double sum = Double.valueOf(Double.parseDouble(rs3.getString(1)));
       System.out.println(sum);
       lblTotal.setText(String.valueOf(sum));
    }

    rs3.close();                          
    pst.close();
    con.close();                         
}
catch (Exception ex)
{
    System.err.print("Exception: ");
    System.err.println(ex.getMessage());
}

如果是java.sql.Date或java.sql.TimeStamp对象,则JTable很可能使用toString方法。也许你应该看看,看看你正在使用的是什么也没有准备好的状态。了解它。您可能还会发现更好地处理您的资源我感觉Sun/Oracle已经放弃了对ODBC网桥的支持,并鼓励更直接地访问驱动程序。x32和x64位驱动程序/进程之间存在一些问题,您可能希望尝试避免这些问题