SQL条目未显示在图表中

时间:2014-12-29 12:09:27

标签: sql date graph between

对于学校项目,我试图生成一个图表,显示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语句,但它也没有用。

我完全没有想法,我真的很感激任何帮助!

卡斯帕

1 个答案:

答案 0 :(得分:0)

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

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

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

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