了解神秘的Oracle JDBC错误 – ORA-00911:无效字符

我正在制作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那样提供信息,我也无法轻易地将它们发送出去。 我也无法看到哪行代码导致exception。

尝试从SQL语句的末尾删除分号。

 static String query = "SELECT emp_id, emp_name, emp_age " + "FROM employee"; // no trailing ";" in the SQL 

波希米亚人是完全正确的。 我不明白为什么这么难。 如果您将消息弹出到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. } 

它会为您提供更多信息。

去除 ; 从查询内部