我的代码中有错误
net.ucanaccess.jdbc.UcanaccessSQLException:
UCAExc:::3.0.7 unexpected token: 2016 required: AND
这是我的代码
try{
String sql = "Select id,nama,grup,tanggal from kuli where tanggal between '"+ctgl.getText()+"' 'AND' '"+ctgl1.getText()+"'";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(Exception e)
{
System.out.println(e);
}
答案 0 :(得分:1)
SQL应该是这样的:
String sql = "Select id, nama, grup, tanggal from kuli where tanggal between #" + ctgl.getText() + "# and #" + ctgl1.getText() + "#";
且ctgl.getText()
和ctgl1.getText()
必须返回格式为:2016/11/05
答案 1 :(得分:0)
您没有为date
传递正确的ctgl.getText()
,因为SQL
查询无法检索数据。另外,不要在引号中使用“AND”。
您需要确保传递正确的日期格式。
此外,不建议像这样使用prepareStatement
(即,在您的代码中使用字符串连接形成sql),这将允许跨站点脚本,而最佳做法是使用{{1 },prepareStatement.setString()
等方法,
您可以查看有关跨站点脚本的here。
答案 2 :(得分:0)
两个问题:
看起来您的SQL语法已损坏。 AND
关键字周围不应有引号。
您不应该像这样将参数值嵌入到SQL中。相反,您应该使用PreparedStatement
和占位符参数。
使用PreparedStatement
有许多优点:
如果参数值来自您无法完全信任的来源,那么最后一个非常重要。
更多信息: