【问题标题】:How to use 2 JDateChooser as a searching tool in JTable?如何使用 2 JDateChooser 作为 JTable 中的搜索工具?
【发布时间】:2018-02-28 07:31:54
【问题描述】:

我在 Jtable 中显示数据库值时遇到问题。我不知道如何使用JDataChooser 作为JTable 中的搜索工具。我想要这样的过程,如果JDateChooser1 选择08-17-2017 并且JDateChooser2 选择09-17-2017
JTable 只会显示日期在08-17-2017 - 09-17-2017 之间的值。日期格式为 (MM-dd-yyyy)。

我有这个方法,作为测试,我把这个方法放到了一个按钮上。我也想知道我可以把这个方法放在哪里才能不使用按钮。选择完日期后自动搜索。

sales 是我在 mysql 中的表名,Date 是列名。

private void Dated() {
    try {
        String value1, value2;
        value1 = jDateChooser1.getDate().toString();
        value2 = jDateChooser2.getDate().toString();
        String sql = "select * from sales where Date = '" + value1 + "' and '" + value2 + "'";
        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

【问题讨论】:

  • 在查询中使用直接值准备语句?永远,永远不要这样做
  • 我只是个学生。我不知道制作系统的注意事项。对不起。

标签: java mysql swing jdbc


【解决方案1】:

您在查询中遗漏了一些信息:

  1. 显示日期在 08-17-2017 - 09-17-2017 之间的值您必须在查询中使用 between 关键字 should be select * from sales where Date between date1 and date1 而不是 =
  2. 因为您使用的是准备好的语句,所以不要使用查询和值的连接。
  3. 除了 Date 是 MySQL 中的保留关键字,您必须将它放在两个 ``
  4. 之间

您的代码应如下所示:

Date value1 = jDateChooser1.getDate();
Date value2 = jDateChooser2.getDate();
String sql = "select * from sales where `Date` between ? and ?";
pst = conn.prepareStatement(sql);
pst.setDate(1, value1);
pst.setDate(2, value2);
rs = pst.executeQuery();

【讨论】:

  • @VhongMarvinNavarraVillanuev 可以告诉我完整的错误吗?
  • (1+) 用于 PreparedStatement 示例。 @VhongMarvinNavarraVillanuev,It showing some errors. incompatible types - 然后修复错误。我们无权访问您的数据库。我们不知道您是如何定义数据库中的数据的。您已经获得了一个如何创建 PreparedStatement 以使 SQL 可读且可维护的简单示例。您可以确保传递给 PreparedStatement 的数据采用您的数据库所期望的格式。
  • 谢谢@camickr,我同意你的观点,我也怀疑 OP 使用 String value1, value2; 而不是 Date
  • @VhongMarvinNavarraVillanuev 然后你必须在java中将你的日期格式化为字符串,看看docs.oracle.com/javase/8/docs/api/java/time/format/…
  • @VhongMarvinNavarraVillanuev 第一个问题是你为什么要使用 varchar(String)?数据库具有不同的数据格式,您应该使用适当的格式。但是,如果您确实想使用字符串,则将日期转换为字符串并使用 PreparedStatement 中的适当方法将参数设置为适当的数据值。阅读 PreparedStatement API 了解更多信息。
猜你喜欢
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
相关资源
最近更新 更多