如何解决在Java中使用不必要的值执行了两次查询错误
我正在使用JFreeChart在Java和MySQL中创建图表。
当我尝试将值插入到另一个表中时,查询似乎被执行了两次,因为我多次获得相同的时间戳记...
这是我的代码的一部分:
private JDBCXYDataset createDataset() {
try {
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:bd?serverTimezone=UTC","MySQL","MySQL");
conn.setAutoCommit(false);
SQLException savedException = null;
Statement st = conn.createStatement();
st.execute("DROP TABLE IF EXISTS test ");
st.execute("create table test(Table timestamp,Table float,Table float)");
String Date_Debut = "2020-06-25 00:00:00";
String Date_Fin = "2020-06-26 00:00:00";
String sql1 = "INSERT INTO test (Table,Table,Table ) "
+ "SELECT Table,Table "
+ "FROM Table "
+ "WHERE Table BETWEEN ? AND ? ";
try ( PreparedStatement ps = conn.prepareStatement(sql1)){
ps.setString(1,Date_Debut);
ps.setString(2,Date_Fin);
ps.executeUpdate();
ps.close();
JDBCXYDataset jds = new JDBCXYDataset(conn);
st.close();
jds.executeQuery("SELECT Table,Table FROM test");
conn.commit();
return jds;
} catch (SQLException ex) {
savedException = ex;
conn.rollback();
} finally {
conn.setAutoCommit(true);
if(savedException != null) {
throw savedException;
}
}
} catch (SQLException ex1) {
}
return null;
}
EDIT:实际上,从数据库直接发出错误消息,主持人可以根据需要删除此帖子。但是,我让Trashgod的回复得到了验证,因为它不仅有帮助。 对于可能遇到类似问题的每个人,请先详细检查数据库,以查看它是否不是从那里来的,而不是从您的代码来的。
解决方法
追踪数据异常繁重,但是$UNICORN
至少可以使结果更容易可视化。一些启发式测试:
-
要验证表格列表中的假定重复项确实是重复项,请格式化时间戳以包含毫秒,例如将
$UNICORN
添加到$UNICORN
或JFreeChart
添加到S
。 -
为了进行研究,请将查询直接直接传递到
SimpleDateFormat
,并添加一个A
子句(未经测试):DateTimeFormatter
与here一样, -
在
JDBCXYDataset
中启用工具提示,以查看就地数据值。这可能会为您的ORDER BY
子句建议其他条件,例如jds.executeQuery( "SELECT Date_Heure,PV,SV FROM cmd3 " + "WHERE Date_Heure BETWEEN " + "2020-06-25 00:00:00 AND 2020-06-26 00:00:00 " + "ORDER BY Date_Heure");
。 -
使用here中讨论过的交互式
ChartFactory
平移/缩放控件检查数据;添加合适的按钮,如here所示,以方便同事查看您的发现。 -
根据设计,
JDBCXYDataset
执行由WHERE
定义的查询。如果您的设计需要显示PV BETWEEN 5.1 AND 5.9
定义的查询中的数据,则可以使用现有的implementation作为指南。JFreeChart
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。