Java Prepared语句Sql查询错误

时间:2015-10-27 12:51:38

标签: java mysql sql

我试图在java程序中运行以下语句。我的问题是语句中的第一个问号(参数)失败,错误信息显示为:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近'你好'关于每周一次的开始计划(CURRENT_DATE +。)   INTERVAL 1 - WEEKD'在第1行。

我有什么东西可以丢失吗?我不能以这种方式进行陈述吗? 在我尝试添加第一个参数并在查询中手动添加名称之前,查询工作正常。任何帮助当然都会受到赞赏。

PreparedStatement ps1 = null;
   ps1 = connection.prepareStatement("CREATE EVENT ? ON SCHEDULE EVERY 1 WEEK STARTS CONCAT(CURRENT_DATE + INTERVAL ? - WEEKDAY(CURRENT_DATE) DAY, ? ) "
                    + " DO UPDATE tablename SET status = ? WHERE name= ? AND address= ?");

1 个答案:

答案 0 :(得分:2)

这是因为引用的名称hello是作为参数传递的,在这种情况下,您可以删除参数并只连接字符串或只是嵌入到字符串中:

connection.prepareStatement("CREATE EVENT hello ON SCHEDULE EVERY 1 WEEK STARTS CONCAT(CURRENT_DATE + INTERVAL ? - WEEKDAY(CURRENT_DATE) DAY, ? ) "
                    + " DO UPDATE tablename SET status = ? WHERE name= ? AND address= ?");

或使用String格式:

connection.prepareStatement(String.format("CREATE EVENT %s ON SCHEDULE EVERY 1 WEEK STARTS CONCAT(CURRENT_DATE + INTERVAL ? - WEEKDAY(CURRENT_DATE) DAY, ? ) "
                    + " DO UPDATE tablename SET status = ? WHERE name= ? AND address= ?", hello));