2012-08-14 26 views
1

像以前一样,制作Java-Oracle11g-JDBC (OJDBC)的代码。 Java代码尝试在下面的语句中执行executeUpdate()并发生错误。但Oracle 11g在没有任何问题的情况下执行它(通过它的GUI)。一个简单的创建用户语句失败?

声明 -

CREATE USER Person identified by 2012; 

错误(即的printStackTrace的一部分) -

java.sql.SQLSyntaxErrorException: ORA-00911: invalid character 
+0

你尝试删除';'在结尾?是2012年的密码?如果是这样,请尝试用''来逃避。 – markus 2012-08-14 08:48:21

回答

3

Oracle不喜欢在最后的分号。你不需要OJDBC查询中的分号,尽管它可以从Oracle GUI中使用。

+0

这很奇怪。 Oracle 11g的GUI喜欢分号。一些java-sql语句成功使用了semis,那么为什么它会在上述情况下投诉? – 2012-08-14 08:57:27

+0

@sweetdreams是的,像JDBC-> MySQL是分号罚款。但是Oracle的JDBC不允许多个查询,我想它完全认为';'是非法角色。我没有解释为什么会这样。 – 2012-08-14 09:01:08

+3

@sweetdreams使用分号的原因是终止一行,以便编译器或引擎知道这是语句的结尾。 JDBC在字符串(“”)内不需要分号。问候 – user75ponic 2012-08-14 09:44:29