我不断收到此错误,我一生都无法理解是什么原因造成的:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '111-11-1111'' at line 1
它被这些陈述抛出:
ps = conn.prepareStatement(
"SELECT * FROM courses WHERE NOT EXISTS"
+ "(SELECT * FROM courses"
+ "NATURAL JOIN register"
+ "WHERE ssn = ?)")
ps.setString(1,ssn);
rs = ps.executeQuery();
我已经在 MySQl 命令行客户端中输入了这个确切的命令,一个字符一个字符(除了我用 '111-11-1111' 替换了?),它执行顺利。然而,当我尝试使用 Java 执行它时,它会因上述语法错误而失败。我有一个下沉的怀疑,答案是非常明显的,盯着我的脸,但我太累了,看不到它。有什么想法吗?
编辑 所以我解决了眼前的问题,但它只是提出了更多问题。如果我将查询构造为单行字符串而不是多行:
ps = conn.prepareStatement(
"SELECT * FROM courses WHERE NOT EXISTS (SELECT * FROM courses NATURAL JOIN register WHERE ssn = ?)");
它执行得很好。(对不起水平滚动条,但在这种情况下我别无选择。)所以,我重新提出我的问题:为什么在 pony-loving-frack 中这会有所不同?我正在使用 Java 7、Netbeans 7.2 和 MySQL 5.5,如果这有什么不同的话。