Java SQLException ORA-00904

У меня возникла проблема с получением java ResultSet в базе данных Oracle XE 11g выпуска 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.

Таблица METHODS определяется в 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
Использование двойных кавычек также вызывает сообщение об ошибке. Я попытался изменить имя столбца, и независимо от того, какое имя я ему даю, он всегда выдает сообщение об ошибке... - person Siebe; 28.07.2012

драйвер, который вы используете, кажется неподходящим ... попробуйте с ojdbc14.jar, он легко доступен на веб-сайте оракула. ​​остальной код в порядке

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