Java 如何通过SQL语句在两个特定日期(由用户指定)之间从DB表中获取数据?

Java 如何通过SQL语句在两个特定日期(由用户指定)之间从DB表中获取数据?,java,sql,jdbc,ucanaccess,Java,Sql,Jdbc,Ucanaccess,这是我的代码,我出错了 “UCanAccess错误-net.UCanAccess.jdbc.UcanaccessSQLException:操作中的数据类型不兼容:在下一行 PreparedStatement pStmt=conn.prepareStatement(sql) 公共空间展示材料(现场详细信息现场详细信息) { String sql=“从CeilingMaterials中选择SiteName、SUM(PlanTileQuantity)、SUM(PlanTilePrice)、SUM(Pe

这是我的代码,我出错了

“UCanAccess错误-net.UCanAccess.jdbc.UcanaccessSQLException:操作中的数据类型不兼容:在下一行

PreparedStatement pStmt=conn.prepareStatement(sql)
公共空间展示材料(现场详细信息现场详细信息)
{
String sql=“从CeilingMaterials中选择SiteName、SUM(PlanTileQuantity)、SUM(PlanTilePrice)、SUM(PellingQuantity)、SUM(PowderQuantity)、SUM(LpattiQuantity)、SUM(LpattiSize)、SUM(CeilingTotalPrice),其中SiteName=”,Date=?”;
try(PreparedStatement pStmt=conn.prepareStatement(sql)){
SimpleDateFormat=新的SimpleDateFormat(“MM/dd/yyyy”);
java.util.Date parsed=format.parse(site_detail.getStartDate());
java.sql.Date sql_date1=new java.sql.Date(parsed.getTime());
format.format(sql_date1);
java.util.Date parsed1=format.parse(site_detail.getEndDate());
java.sql.Date sql_date2=new java.sql.Date(parsed1.getTime());
format.format(sql_date2);
pStmt.setString(1,site_detail.getSiteName());
pStmt.setDate(2,sql_date1);
pStmt.setDate(2,sql_date2);
结果集rs=pStmt.executeQuery();
while(rs.next()){
showCeil.setSiteName(rs.getString(“SiteName”);
showCeil.setTileQuantity(rs.getString(“PlanTileQuantity”);
showCeil.setTilePrice(rs.getString(“PlanTilePrice”);
showCeil.setPellingQuantity(rs.getString(“PellingQuantity”);
showCeil.setPellingPrice(rs.getString(“PellingPrice”);
showCeil.setLpattiQuantity(rs.getString(“LpattiQuantity”);
showCeil.setLpattiPrice(rs.getString(“LpattiPrice”);
showCeil.setLpattiSize(rs.getString(“LpattiSize”);
showCeil.setPowderQuantity(rs.getString(“PowderQuantity”);
showCeil.setPowderPrice(rs.getString(“PowderPrice”);
showCeil.setTotalCeilingPrice(rs.getString(“CeilingTotalPrice”);
show_ceil_w=新站点_详细信息_show_界面();
show_ceil_w.showGui(showCeil);
}
}
}

参数化查询的SQL命令文本不得在参数占位符周围包含引号(或其他分隔符)。您有以下错误:

…其中SiteName='?'和Date=?

具体地说,就是从CeilingMaterials的参数
中删除单个qoutes,其中SiteName=?和Date=?“
Gord Thompson,但是在更正sql语句后,我仍然得到了与上面相同的错误。。
PreparedStatement pStmt = conn.prepareStatement(sql)

public void showCeilingMaterials(Site_Details site_detail) 
{
    String sql="SELECT SiteName, SUM(PlanTileQuantity), SUM(PlanTilePrice), SUM(PellingQuantity),SUM(PellingPrice), SUM(PowderQuantity),SUM(PowderPrice),SUM(LpattiQuantity),SUM(LpattiPrice),LpattiSize,SUM(CeilingTotalPrice) FROM CeilingMaterials Where SiteName='?' AND Date<='?' AND Date>=?";
        try (PreparedStatement pStmt = conn.prepareStatement(sql)) {
            SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
            java.util.Date parsed = format.parse(site_detail.getStartDate());
            java.sql.Date sql_date1 = new java.sql.Date(parsed.getTime());
            format.format(sql_date1);
            java.util.Date parsed1 = format.parse(site_detail.getEndDate());
            java.sql.Date sql_date2 = new java.sql.Date(parsed1.getTime());
            format.format(sql_date2);
            pStmt.setString(1, site_detail.getSiteName());
            pStmt.setDate(2, sql_date1);
            pStmt.setDate(2,sql_date2);
            ResultSet rs= pStmt.executeQuery();
            while(rs.next()){
                showCeil.setSiteName(rs.getString("SiteName"));
                showCeil.setTileQuantity(rs.getString("PlanTileQuantity"));
                showCeil.setTilePrice(rs.getString("PlanTilePrice"));
                showCeil.setPellingQuantity(rs.getString("PellingQuantity"));
                showCeil.setPellingPrice(rs.getString("PellingPrice"));
                showCeil.setLpattiQuantity(rs.getString("LpattiQuantity"));
                showCeil.setLpattiPrice(rs.getString("LpattiPrice"));
                showCeil.setLpattiSize(rs.getString("LpattiSize"));
                showCeil.setPowderQuantity(rs.getString("PowderQuantity"));
                showCeil.setPowderPrice(rs.getString("PowderPrice"));
                showCeil.setTotalCeilingPrice(rs.getString("CeilingTotalPrice"));
                show_ceil_w=new Site_Details_Show_Interface();
                show_ceil_w.showGui(showCeil);
            }
        }
    }