了解神秘的 Oracle JDBC 错误 - ORA-00911:无效字符
Posted
技术标签:
【中文标题】了解神秘的 Oracle JDBC 错误 - ORA-00911:无效字符【英文标题】:Understanding mysterious Oracle JDBC errors - ORA-00911: invalid character 【发布时间】:2012-08-05 01:09:43 【问题描述】:我正在编写 Java 1.6-JDBC-Oracle 11 代码。我创建了一个名为employee 的表,其中包含id、name 和age。我收到错误 - ORA-00911:无效字符。我该如何解决这个问题?
这是我的代码-
import java.sql.*;
import java.util.Properties;
import java.io.IOException;
import java.io.FileInputStream;
public class HelloOracle
static String query =
"SELECT emp_id, emp_name, emp_age " +
"FROM employee;";
public static void main(String[] args)
String username = "";
String password = "";
Properties prop = new Properties();
try
FileInputStream fis = new FileInputStream("Login.properties");
prop.load(fis);
catch (IOException ex)
ex.printStackTrace();
username = prop.getProperty("username").trim();
password = prop.getProperty("password").trim();
try
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/xe", username, password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
System.out.print(rs.getString("emp_id"));
System.out.print(" , ");
System.out.print(rs.getString("emp_name"));
System.out.print(" , ");
System.out.print(rs.getString("emp_age"));
System.out.println();
catch (SQLException e)
System.out.println("Exception: " + e);
不幸的是,oracle 错误消息的信息量不如 mysql 或 mssql,我无法轻松解决它们。我也看不到是哪一行代码导致了异常。
【问题讨论】:
【参考方案1】:尝试删除 SQL 语句末尾的分号。
即
static String query = "SELECT emp_id, emp_name, emp_age " +
"FROM employee"; // no trailing ";" in the SQL
【讨论】:
是的,现在可以使用了。有时我使用;它没有抱怨。例如,在 create table 语句的末尾。 我注意到executeQuery
不喜欢结尾的分号,但execute
不介意。
哇!我不敢相信人们真的为 Oracle DB 花钱。【参考方案2】:
波西米亚风格完全正确。我不明白为什么这这么难。如果您将消息弹出到 Google 中,您会得到:
http://www.dba-oracle.com/sf_ora_00911_invalid_character.htm
分号是第一个注意到的问题。
另一个建议:不要这样做。
catch(SQLException e)System.out.println("Exception: " + e);
改为这样做:
catch(SQLException e)
e.printStackTrace(); // better yet, log it.
它会给你更多的信息。
【讨论】:
请从 -1 到 0 投票。也适用于创建表语句。我认为最好也将它用于选择。 我对这个问题投了反对票,因为将错误消息剪切并粘贴到搜索引擎会带来答案。我认为值得投反对票的是你缺乏主动性,而不是使用分号。 我赞成这个问题,因为 Google 中的ORA-00911: invalid character jdbc
将此问题作为第一个链接返回。
少说问题的价值,多说页面排名和搜索引擎优化。
无法想象为什么这件事在事实发生四年后被否决。那么是真的;今天是真的。【参考方案3】:
删除 ;从查询内部
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review 它确实为这个问题提供了一个清晰而简单的答案。以上是关于了解神秘的 Oracle JDBC 错误 - ORA-00911:无效字符的主要内容,如果未能解决你的问题,请参考以下文章