我试图在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= ?");
答案 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));