2012-08-07 14 views
21

Realizzo codice Java 1.6-JDBC-Oracle 11. Ho creato un tavolo chiamato dipendente con ID, nome ed età. Ricevo l'errore - ORA-00911: carattere non valido. Come posso risolvere questo?Comprensione degli errori misteriosi di Oracle JDBC - ORA-00911: carattere non valido

Ecco il mio 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); 
     } 

    } 

} 

Purtroppo, i messaggi di errore Oracle non sono così informativo come MySQL o MSSQL e io non sono in grado di disturbare il tiro facilmente. Inoltre, non sono in grado di vedere quale riga di codice ha causato l'eccezione.

risposta

45

Provare a rimuovere il punto e virgola dalla fine dell'istruzione SQL.

cioè

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

Sì, ora funziona. A volte uso; e non si lamenta. Ad esempio, alla fine delle istruzioni create sulla tabella. –

+4

Ho notato che 'executeQuery' non ama il punto e virgola finale, ma' execute' non ha importanza. –

+1

Wow! Non posso credere che le persone effettivamente paghino per Oracle DB. – isapir

0

boemo è esattamente a destra. Non vedo perché fosse così difficile. Se si pop il messaggio in Google, otterrete questo:

http://www.dba-oracle.com/sf_ora_00911_invalid_character.htm

Il punto e virgola è il primo problema rilevato.

Un'altra raccomandazione: non farlo.

catch(SQLException e){System.out.println("Exception: " + e);} 

fare questo, invece:

catch(SQLException e){ 
    e.printStackTrace(); // better yet, log it. 
} 

Vi darà molto di più informazioni.

+2

Che cos'è Google? – Bohemian

+2

@ Bohemian: fammi cercare su google e scoprilo: P –

+0

Per favore, superi la domanda da -1 a 0. Il; funziona anche per creare una tabella. Ho pensato che è meglio usarlo anche per selezionare. –

0

rimuovere il; dall'interno della query

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. - [Dalla recensione] (/ recensione/post di bassa qualità/13636895) – xenteros

+0

Fornisce una risposta chiara e semplice alla domanda. –

Problemi correlati