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

2019-06-26 20:15发布

我想提出的Java 1.6 JDBC甲骨文11码。 我创建了一个名为员工提供ID,姓名和年龄表。 我得到的错误 - 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的信息,我不能轻易麻烦拍摄他们。 我也没能看到这行代码导致异常。

Answer 1:

尝试从您的SQL语句的结束卸下分号。

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


Answer 2:

波希米亚是完全正确的。 我不明白这是为什么这么难。 如果弹出消息到谷歌,你会得到这样的:

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.
}

它会给你很多的更多信息。



Answer 3:

除掉 ; 从查询中



文章来源: Understanding mysterious Oracle JDBC errors - ORA-00911: invalid character