【问题标题】:SQL entries not showing in graph图表中未显示 SQL 条目
【发布时间】:2014-12-29 12:09:26
【问题描述】:

对于一个学校项目,我试图生成一个图表,显示 SQL 表中两个日期之间的所有条目。我正在使用以下代码:

int bLost = 0;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strstartDate = sdf.format(startDate.getDate());
String strendDate = sdf.format(endDate.getDate());

try {   

    conn = JavaConnect.ConnecrDb();

    pst = conn.prepareStatement("SELECT COUNT(*) FROM lost"
                + " WHERE Datecreated >= " + strstartDate 
                + " AND Datecreated <=" + strendDate );

    rsLost = pst.executeQuery();

    if (rsLost.next()) {
        bLost = rsLost.getInt(1);
    }

} catch (Exception e) {
    System.out.println(e.getMessage());
    JOptionPane.showMessageDialog(null, "Table cannot be found");
}

// this is some stuff for the graph
DefaultCategoryDataset bagStats = new DefaultCategoryDataset();

// This should show me how many entries it found 
bagStats.setValue(bLost, "Bagage Lost", "Bagage Lost");

如果我像这样执行没有日期部分的语句,代码可以正常工作:

pst = conn.prepareStatement("SELECT COUNT(*) FROM lost"

我也尝试过使用 BETWEEN 语句,但也没有用。

我完全没有想法,我非常感谢任何帮助!

卡斯帕

【问题讨论】:

    标签: sql date graph between


    【解决方案1】:

    你需要在你的sql代码中给字符串加上引号,所以它的内容如下:

    pst = conn.prepareStatement("SELECT COUNT(*) FROM lost"
                + " WHERE Datecreated >= \'" + strstartDate 
                + "\' AND Datecreated <=\'" + strendDate + "\'");
    

    在构造sql语句时,最好在调试时在命令行或消息框中打印字符串语句,这样你就可以准确地看到传递了什么。

    另外,如果接受用户对变量的输入,最好对查询进行参数化以避免 sql 注入攻击的可能性。

    【讨论】:

    • 嘿,感谢您的回复,但是您给我的代码在 Netbeans 中给了我一个语法错误。此外,它应该在没有这些引号的情况下工作,就像我在其他类中所做的那样
    • 我刚刚做了一些更正,现在试试吧。
    • 有效!非常感谢,你帮我解决了一个我花了几个小时解决的问题!
    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多