语句在数据库中有效,但在 Java 代码中失败 -
Posted
技术标签:
【中文标题】语句在数据库中有效,但在 Java 代码中失败 -【英文标题】:Statement works in database, but fails in Java code - 【发布时间】:2012-08-10 11:26:09 【问题描述】:CREATE USER Person identified by 2012;GRANT ALL PRIVILEGES TO Person;
Oracle 11g (GUI) 成功执行了这些语句。但是,当我完全复制并粘贴上面的语句并尝试使用executeUpdate(String sql)
执行它时,我得到了下面的异常。为什么?
java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
【问题讨论】:
您不需要分开查询吗?我的意思是两个独立的executeUpdate
。
您尝试按原样执行它们,即一起执行?
@MatinKh - 我不知道这是必要的。
【参考方案1】:
你不应该把两个不同的 SQL 语句当作一个。 JDBC 驱动程序无法执行作为一个字符串传递的两条语句。
尝试将它们执行为
Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE USER Person identified by 2012");
stmt.executeUpdate("GRANT ALL PRIVILEGES TO Person;");
应该可以。干杯。
【讨论】:
【参考方案2】:取决于您的数据库 jdbc 驱动程序,该驱动程序将不支持在一个“executeUpdate”中执行两个语句。您必须执行以下操作:
Statement stmt = conn.createStatement();
for(String statement : statements)
stmt.addBatch(statement);
stmt.executeBatch();
【讨论】:
谢谢!我想在这里添加一些关于 executeUpdate 与 executeBatch() 的额外信息 - ***.com/questions/1143053/…以上是关于语句在数据库中有效,但在 Java 代码中失败 -的主要内容,如果未能解决你的问题,请参考以下文章
XHR 请求在 Scrapy 中失败,但在 python-requests 中有效
相同的 SQl 查询在访问中运行,但在使用 java 的访问中的 sql 脚本中失败
通过本地数据源领域的 Servlet3 登录在 Tomcat 7.0.29 中有效,但在 7.0.54 及更高版本中失败
RESTful json 响应在 tomcat 上失败,但在 GlassFish 中有效
在 C# 中连接到 Websphere MQ 有效,但在 C++ 中失败,代码为 2058 (MQRC_Q_MGR_NAME_ERROR)