Java 为什么日期格式填充不正确?
我已从数据库填充了JTable。所有数据都已正确填充。但供应日期看起来不正确。有人能告诉我我做错了什么吗?提前谢谢。 这是我填充Jtable的源代码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(
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位驱动程序/进程之间存在一些问题,您可能希望尝试避免这些问题