2012-08-07 8 views
21

Java 1.6-JDBC-Oracle 11コードを作成しています。 ID、名前、年齢の従業員というテーブルを作成しました。 ORA-00911:無効な文字です。これをどうすれば解決できますか?不思議なOracle JDBCエラーの理解 - ORA-00911:無効な文字

はここ残念なことに、Oracleエラー・メッセージは、MySQLまたはMSSQLほど有益ではないと私は簡単にそれらを撃つのトラブルにはできませんよ、私のコード -

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); 
     } 

    } 

} 

です。私はまた、どの行のコードが例外を引き起こしたかを見ることができません。

答えて

45

SQLステートメントの最後からセミコロンを削除してみます。

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

はい、今すぐ動作します。時々私は使う。それは不平を言うことはありません。たとえば、create tableステートメントの終わりです。 –

+4

私は 'executeQuery'は末尾のセミコロンを気に入らないが、' execute'は気にしないことに気付きました。 –

+1

うわー!人々が実際にOracle DBにお金を払うとは信じられません。 – isapir

0

すなわちボヘミアンは正確に正しいです。なぜこれが大変だったのか分かりません。注意

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

セミコロンが最初の問題である:あなたがグーグルにメッセージをポップアップする場合は、あなたがこれを取得します。

もう1つの推奨事項:これを行わないでください。

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

代わりにこれを行います。

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

をそれはあなたより多くの情報をたくさん与えるでしょう。

+2

Googleとは何ですか? – Bohemian

+2

@ボヘミアン - 私はGoogleを検索し、それを見つけることができます:P –

+0

-1から0まで質問をアップしてください。テーブル・ステートメントの作成にも使用できます。私はその選択肢のためにそれを使用する方が良いと思った。 –

0

を削除します。クエリ内から

+0

これは質問への答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿](/レビュー/低品質の投稿/ 13636895) – xenteros

+0

質問に対する明確で簡単な答えが表示されます。 –

関連する問題