ชวา SQLException ORA-00904

ฉันมีปัญหาในการรับ java ResultSet บนฐานข้อมูล Oracle XE 11g release 2 ฉันใช้ไดรเวอร์ ojdbc6_g.jar จาก Oracle เพื่อตั้งค่าการเชื่อมต่อ JDBC ฉันได้รับข้อผิดพลาดต่อไปนี้: ORA-00904: "PARSEBOOL": ตัวระบุที่ไม่ถูกต้อง

นี่คือรหัส Java ของฉัน:

st = s.getConnection().createStatement();
rs = st.executeQuery("SELECT ID, METHODNAME, BEAN, PARSEBOOL, HASHID, ALIAS, WEBTAB FROM METHODS");

ฉันค่อนข้างแน่ใจว่านี่ถูกต้องเพราะทุกอย่างใช้งานได้ในขณะที่ทดสอบ HSQLDB

วิธีการของตารางถูกกำหนดไว้ดังต่อไปนี้ใน SQLDeveloper:

CREATE TABLE "DFOLSTAT"."METHODS"
  (
    "ID"         NUMBER(*,0) NOT NULL ENABLE,
    "METHODNAME" VARCHAR2(100 BYTE),
    "BEAN"       VARCHAR2(100 BYTE),
    "HASHID"     VARCHAR2(2 BYTE),
    "ALIAS"      VARCHAR2(100 BYTE),
    "WEBTAB"     VARCHAR2(100 BYTE),
    "PARSEBOOL"  CHAR(1 BYTE),
    CONSTRAINT "METHODS_PK" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE,
    CONSTRAINT "METHODS_HASHID" UNIQUE ("HASHID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE         DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE
  )

ฉันอ่านเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้นเนื่องจากชื่อคอลัมน์ที่คำนึงถึงขนาดตัวพิมพ์ แต่เมื่อดำเนินการค้นหาใน SQLDeveloper หรือบรรทัดคำสั่ง ทุกอย่างทำงานได้ดี ผมทำอะไรผิดหรือเปล่า?

ขอบคุณล่วงหน้า,

ซีบี


person Siebe    schedule 28.07.2012    source แหล่งที่มา
comment
ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้ ดังนั้นเพียงแนะนำคุณผ่านความคิดเห็น: ฉันเดาว่ามันเกี่ยวข้องกับบางอย่างที่ PARSEBOOL ประกาศเป็น CHAR ลองใส่ VARCHAR2 แทน   -  person Kazekage Gaara    schedule 28.07.2012
comment
@KazekageGaara ใช้ VARCHAR2 ไม่ได้ช่วยอะไร   -  person Siebe    schedule 28.07.2012
comment
คุณช่วยลองเปลี่ยนชื่อคอลัมน์ ParseBool เป็นอย่างอื่นแล้วตรวจสอบได้ไหม สาเหตุที่น่าจะเป็นไปได้ของ ORA-00904 เกิดจากการหายไปหรือตัวระบุที่ไม่ถูกต้องสำหรับคอลัมน์ แต่ดูเหมือนว่าจะไม่มีกรณีใดเกิดขึ้นที่นี่ เพียงแค่ทำให้ยุ่งเหยิง หากไม่ได้ผล ให้ลองเปลี่ยนไดรเวอร์ของคุณตามคำตอบข้อใดข้อหนึ่งด้านล่างนี้ ตรวจสอบไฟล์การติดตามหรือบันทึกของคุณซึ่งอาจมีข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้   -  person verisimilitude    schedule 28.07.2012
comment
หากคุณลบ PARSEBOOL ออกจาก SQL มันจะทำงานหรือไม่ หรือคุณได้รับข้อผิดพลาดสำหรับคอลัมน์อื่น นอกจากนี้ คุณแน่ใจหรือไม่ว่าไม่มีสคีมา/การเชื่อมต่ออื่นที่ฉันใช้จาก Java   -  person Nivas    schedule 29.07.2012


คำตอบ (3)


บางทีคุณอาจขัดแย้งกับชื่อฟังก์ชัน ลองใส่เครื่องหมายคำพูดคู่ล้อมรอบชื่อคอลัมน์ เช่นเดียวกับที่คุณระบุในคำสั่ง CREATE TABLE

person Marko Topolnik    schedule 28.07.2012
comment
การใช้เครื่องหมายคำพูดคู่ยังทำให้เกิดข้อความแสดงข้อผิดพลาดอีกด้วย ผมลองเปลี่ยนชื่อคอลัมน์แล้ว ไม่ว่าจะตั้งชื่ออะไรก็ตาม มันก็ขึ้น Error ตลอด... - person Siebe; 28.07.2012

ดูเหมือนว่าไดรเวอร์ที่คุณใช้จะไม่เหมาะสม ... ลองใช้ ojdbc14.jar บนเว็บไซต์ของ oracle ได้อย่างง่ายดาย .. รหัสส่วนที่เหลือก็โอเค

person Prateek    schedule 28.07.2012
comment
ฉันลองใช้ไดรเวอร์ที่คุณแนะนำ แต่ก็ไม่ได้ผลเช่นกัน ฉันยังลองใช้ไดรเวอร์ที่รวมอยู่ในแอปพลิเคชัน SQLDeveloper แต่ก็ไม่ประสบความสำเร็จเช่นกัน - person Siebe; 28.07.2012

คุณลองโทรไปที่โต๊ะของคุณดังนี้

        rs = st.executeQuery("SELECT METHODS.ID, METHODS.METHODNAME, 
METHODS.BEAN, METHODS.PARSEBOOL, METHODS.HASHID, METHODS.ALIAS, 
    METHODS.WEBTAB FROM DFOLSTAT.METHODS");

หรือลองสิ่งนี้

    rs = st.executeQuery("SELECT ID, METHODNAME, BEAN, \"PARSEBOOL\", HASHID, 
ALIAS, WEBTAB FROM METHODS");
person Jacob    schedule 29.07.2012