2012-08-07 9 views
21

मैं जावा 1.6-जेडीबीसी-ओरेकल 11 कोड बना रहा हूं। मैंने आईडी, नाम और आयु वाले कर्मचारी नामक एक टेबल बनाई। मुझे त्रुटि मिल रही है - ओआरए -00 9 11: अमान्य चरित्र। मैं इसे कैसे ठीक करूं ?रहस्यमय ओरेकल जेडीबीसी त्रुटियों को समझना - ओआरए -00 9 11: अमान्य चरित्र

यहाँ मेरी 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); 
     } 

    } 

} 

दुर्भाग्य से, ओरेकल त्रुटि संदेश mysql या mssql के रूप में के रूप में जानकारीपूर्ण नहीं हैं और मैं उन्हें आसानी से गोली मार मुसीबत नहीं पा रहा हूँ है। मैं यह भी देखने में सक्षम नहीं हूं कि कोड की कौन सी पंक्ति अपवाद का कारण बनती है।

उत्तर

45

अपने SQL कथन के अंत से अर्ध कोलन हटाने का प्रयास करें।

यानी

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

हां, यह अब काम करता है। कभी-कभी मैं उपयोग करता हूं; और यह शिकायत नहीं करता है। उदाहरण के लिए, तालिका विवरण बनाने के अंत में। –

+4

मैंने देखा है कि 'executeQuery' पिछली अर्धविराम पसंद नहीं करता है, लेकिन' execute' को कोई फर्क नहीं पड़ता। –

+1

वाह! मुझे विश्वास नहीं है कि लोग वास्तव में ओरेकल डीबी के लिए पैसे का भुगतान करते हैं। – isapir

0

बोहेमियन बिल्कुल सही है। मुझे नहीं लगता कि यह इतना कठिन क्यों था। आप गूगल में संदेश पॉप, तो आप इस मिल जाएगा:

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

यह आप बहुत अधिक जानकारी देंगे।

+2

Google क्या है? – Bohemian

+2

@ बोहेमियन- मुझे Google पर खोज करने दें और इसे ढूंढें: पी –

+0

कृपया प्रश्न -1 से 0 तक बढ़ाएं; तालिका विवरण बनाने के लिए भी काम करता है। मैंने सोचा कि इसे चुनने के लिए इसका उपयोग करना बेहतर होगा। –

0

हटाएं; क्वेरी के अंदर से

+0

यह प्रश्न का उत्तर नहीं प्रदान करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/136368 9 5) – xenteros

+0

यह प्रश्न का स्पष्ट और सरल उत्तर प्रदान करता है। –

संबंधित मुद्दे