![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Не могу понять в чём дело...
Помогите пожайлуста. Не могу открыть получившиеся XLS-файлы . Пишет , что файл невозможно прочитать. Кроме того после нажатия кнопки (обработчик fButton.addActionListener(new ActionListener() {) выдаёт сообщения: at oracle.jdbc.ttc7.Oopen.receive(Oopen.java) at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java) at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java) at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConn ection.java) at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection. java) at JavX1$1.actionPerformed(JavX1.java:135) at java.awt.Button.processActionEvent(Unknown Source) at java.awt.Button.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) TABLE_CAT TABLE_CAT,TABLE_SCHEM TABLE_CAT,TABLE_SCHEM,TABLE_NAME TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE SELECT TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE FROM SA_PGAM java.sql.SQLException: ORA-01000: maximum open cursors exceeded at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java) Итак для каждой таблицы. Фрагмент кода:
Спасибо! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
После того как ты поработал с ResultSet и Statement, их нужно закрывать close().
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
А где у тебя, собственно, вызывается init?
Смахивает на косяк в администрировании базы. Можно увеличить максимальное кол-во открытых курсоров. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Строка 38 Или не то? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Не то. Это место где он объявлен. Впрочем это не важно, просто добавь закрытие курсора:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Не подскажете где это можно сделать? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Лучше попробуй ликвидировать ошибку в программе, а уже потом мы пойдем в администрирование базы В противном случае никакое максиммальное количество тебя не спасет. Это сообщение отредактировал(а) Lamer George - 15.8.2006, 14:34 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Поприкрывал, позакрывал , как сказали
, нет обратно выдаёт: at oracle.jdbc.ttc7.Oopen.receive(Oopen.java) at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java) at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java) at oracle.jdbc.driver.OracleConnection.privateCreateStatement(OracleConn ection.java) at oracle.jdbc.driver.OracleConnection.createStatement(OracleConnection. java) at JavX1$1.actionPerformed(JavX1.java:135) at java.awt.Button.processActionEvent(Unknown Source) at java.awt.Button.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) TABLE_CAT TABLE_CAT,TABLE_SCHEM TABLE_CAT,TABLE_SCHEM,TABLE_NAME TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE SELECT TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE FROM SA_PGAM java.sql.SQLException: ORA-01000: maximum open cursors exceeded at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java) |
|||
|
||||
| Abeke |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
А вообще когда следует использовать:rs.close() , st .close() ;
conn.close() ; Может лучше вообще всегда писать:
А что приблизительно может означать это исключение?
|
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
NullPointerException обозначает, что ты пытаешься обратится к объекту по ссылке, которой еще не было присвоено значение.
А по поводу первой ошибки дай полный stack trace. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Ну так посмотри, какая строчка в файле JavX1.java имеет номер 241. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Вот фрагмент немного переделанного кода:
и вся проблема ,я так понял, вот в этом месте:
В этом месте показывает всё нормально(сисок заполнен , показан текущий элемент выборки):
но вот производить сравнение почему-то не хочет (даже если вместо списка использовать массив строк) |
||||||
|
|||||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Видимо, потому что сроки надо сравнивать не через ==, а через equals(). -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Спасибо Но вот снова даёт предупреждение: java.sql.SQLException: ???????????? ?????? ???????: getValidColumnIndex at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java) at oracle.jdbc.dbaccess.DBError.check_error(DBError.java) at oracle.jdbc.driver.OracleResultSetMetaData.getValidColumnIndex(Oracle ResultSetMetaData.java) at oracle.jdbc.driver.OracleResultSetMetaData.getColumnName(OracleResult SetMetaData.java) at JavX1$1.actionPerformed(JavX1.java:180) at java.awt.Button.processActionEvent(Unknown Source) at java.awt.Button.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Причём сразу же после :
Хотя с наличием соответствующих полей (в переменной zaprStrok) в таблице theChoice.getItem(i1) вроде всё нормально. Запись полей таблицы theChoice.getItem(i1) в перем. zaprStrok
|
||||||
|
|||||||
| Abeke |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Кстати,
Выводит select TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE from ALL_CONS_COLUMNS Для этого предусмотрено:
|
||||
|
|||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
нету колонки с номером 0, по крайне мере в ResultSet. Они начинаются с 1
|
|||
|
||||
| Abeke |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Простите , а как это понять? Ведь я же задаю ему конкретные условия , о том какие поля на выбрать :
И список полей , которые надо выбрать тоже задан чётко.(Показано выше) И проверки полей тоже есть , а он всё вемя выдаёт предупреждение:
|
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Abeke, ты можешь выкинуть из примера работу с екселем и прочее не относящееся к делу, так чтобы его можно было запустить.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Abeke |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Выкинул и всё равно загвоздка в этом месте :
Код:
|
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Abeke, я искренне пытался разобраться в твоем коде в течение пятнадцати минут, но бросил. Он безобразен. Настоятельно рекомендую покопаться в нем еще раз, выкинуть вложенные конструкции try/catch, и сделать так, чтобы твой код могу скомпилироваться не только у тебя, но и у других. Для этого нужно, как минимум, убрать из него JavX1ApplicationFrame, объяснить, лоткуда взялась переменная i1, понять, почему у тебя dbmd объявляется два раза и т.д. Без этого код становится абсолютно нечитабельным.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Прошу прощения , код действительно был безобразным.
Теперь выкинул всё лишнее(всё что мог).
не могу. При компиляции требует их наличия.
строка 91.
Вообще-то больше, но это всё результат попыток разобраться с этой ошибкой. Вообще-то я хотел узнать , почему подключение к базе и выборка таблиц проходят нормально, но когда дело доходит до формирования запроса
то он начинает выдавать предупреждение? Подправленный код:
Добавлено @ 14:12
Пардон, строка 89. |
||||||||||||
|
|||||||||||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
А есть ли какие-то другие способы выборки(записи в массив) наименований полей таблицы кроме этого:
? Несколько подозрительный . Данный способ извлекает постоянно почему-то только четыре наименования полей , хотя когда я проверял с помощью SQL-Plus , у некоторых таблиц их гораздо больше. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
В принципе, если тебя интересует поддержка только Оракла, то их можно выцепить из системных таблиц. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
А примерчик можно, |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Ну и как с помощью этого запроса получить список полей таблицы DBA_TABLES?
То есть что потом делать? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Не совсем понял, что именно тебе нужно, но всю необходимую тебе информацию ты можешь получить из системных таблиц DBA_TABLES и DBA_TAB_COLUMNS.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Я хотел бы автоматизировать процесс получения информации из ORACLE след. образом:
1) автомат . получение таблиц из Oracle и запись их наименоаний в массив наименований таблиц; 2) получение полей таблицы (из массива наименований таблиц) , полученной автоматическим способом из Oracle; 3) формирование запросов : SELECT <список полей > FROM <имя таблицы(из массива наименований таблиц)> Как получить список таблиц , мне уже известно . Теперь я хочу узнать : зная наименование таблицы ,как получить список её полей (т.е. какие есть поля у данной таблицы) Всё это для того ,чтобы не писать для каждой таблицы SELECT <список полей > FROM <имя таблицы> Так как таблиц очень много. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Ввожу
и непонятно , где таблицы , а где их колонки. Ладно , возьмём к примеру таблицу dba_tab_columns , у которой есть следующие поля :OWNER, TABLE_NAME,COLUMN_NAME,DATA_TYPE,DAT DATA_TYPE_OWNER,DATA_LENGTH DATA_PRECISION, DATA_SCALE, N, COLUMN_ID DEFAULT_LENGTH,DATA_DEFAULT,NUM_DISTINCT LOW_VALUE, HIGH_VALUE,DENSITY, NUM_NULLS NUM_BUCKETS, LAST_ANA SAMPLE_SIZE,CHARACTER_SET_NAME,CHAR_COL_DECL_LENGTH,GLO, USE,AVG_COL_LEN. Возьмём теперь таблицу AGENCY у которой есть следующие поля : AGENCY_ID ADDRESS_ID, COMPANY_NAME, CONTACT_NAME, CONTACT_TEL, COMMENTS, IMMEDIATE_XCHG . Среди них нет ,кстати , поля table_name . Кстати все их поля вытащил через SQL*Plus. Так вот мне нужна технология получения наименований всех полей таблицы. Если текущей таблицей стала таблица AGENCY , то чтобы наименования всех её полей ( AGENCY_ID ADDRESS_ID, COMPANY_NAME, CONTACT_NAME, CONTACT_TEL, COMMENTS, IMMEDIATE_XCHG ) записались куда-то например в массив. Если текущей таблицей стала таблица dba_tab_columns , то чтобы наименования всех её полей ( OWNER, TABLE_NAME,COLUMN_NAME,DATA_TYPE,DAT DATA_TYPE_OWNER,DATA_LENGTH DATA_PRECISION, DATA_SCALE, N, COLUMN_ID DEFAULT_LENGTH,DATA_DEFAULT,NUM_DISTINCT LOW_VALUE, HIGH_VALUE,DENSITY, NUM_NULLS NUM_BUCKETS, LAST_ANA SAMPLE_SIZE,CHARACTER_SET_NAME,CHAR_COL_DECL_LENGTH,GLO, USE,AVG_COL_LEN.) записались куда-то например в массив. Мне посоветовали такой способ перебора всех полей таблицы:
,но он не пашет. |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Что же здесь непонятного? Имя таблицы - в поле TABLE_NAME, имя колонки - в поле COLUMN_NAME. Ты с SQL знаком? Возьмем. Тогда составляешь запрос
и получаешь список наименований ее колонок. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Abeke |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 4.8.2006 Репутация: нет Всего: нет |
Спасибо, большое спасибо, разобрался , заработало!!!
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |