Je fabrique du code Java 1.6-JDBC-Oracle 11. J'ai créé une table appelée employee avec identifiant, nom et âge. Je reçois le message d'erreur - ORA-00911: caractère non valide. Comment puis-je réparer cela ?
Voici mon code-
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);
}
}
}
Malheureusement, les messages d'erreur Oracle ne sont pas aussi informatifs que mysql ou mssql et je ne parviens pas à les résoudre facilement. Je ne peux pas non plus voir quelle ligne de code a provoqué l'exception.
Essayez de supprimer les points-virgules à la fin de votre instruction SQL.
c'est à dire
static String query = "SELECT emp_id, emp_name, emp_age " +
"FROM employee"; // no trailing ";" in the SQL
retirer le ; de l'intérieur de la requête
Bohemian est tout à fait juste. Je ne vois pas pourquoi c'était si difficile. Si vous ouvrez le message dans Google, vous obtiendrez ceci:
http://www.dba-Oracle.com/sf_ora_00911_invalid_character.htm
Le point-virgule est le premier problème noté.
Une autre recommandation: ne faites pas cela.
catch(SQLException e){System.out.println("Exception: " + e);}
Faites ceci à la place:
catch(SQLException e){
e.printStackTrace(); // better yet, log it.
}
Cela vous donnera beaucoup plus d'informations.