![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
SectoR |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.10.2005 Репутация: нет Всего: нет |
Весь код приводить не буду слишком емкий... Опишу так:
В главном методе создается соединение
далее вызывается метод fillPerson(Connection conn, List persons) в нем происходит заполнение таблиц ПЕРСОНЫ после чего все это завершается так: CollapsedExpandedWrap enabledWrap disabledLine numbers onLine numbers off
далее вызывается метод fillDocs(Connection conn, List persons) в нем происходит заполнение таблицы ДОКУМЕНТЫ связанной с таблицей ПЕРСОНЫ (ДОКУМЕНТЫ.КОД_ПЕРСОНЫ = ПЕРСОНЫ.КОД) после чего все это завершается так: CollapsedExpandedWrap enabledWrap disabledLine numbers onLine numbers off
в результате отработки метода fillPerson все без багов, а вот второй метод никак не хочет отрабатывать Цитата
Я подумал что commit не активируется после добавления записей в первую таблицу (ПЕРСОНЫ) и поэтому не происходит вставка во вторую таблицу (ДОКУМЕНТЫ, связанную с первой). Затем до вызова методов fillPerson и fillDocs я добавил conn.setAutoCommit(false); т.к. прочитал в документации что conn.commit() будет срабатывать только тогда, когда auto-commit опция будет отключена. И по умолчанию все объекты Connection находятся в режиме автозавершения. Но и это не помогло!!! Я так понимаю: commit делает постоянными изменения, произведенные командами, связанными с соединением?! Исходя из этого мне нужно сделать так: 1) открыть соединение, с опцией setAutoCommit(false); 2) заполнить таблицу методом fillPerson 3) выполнить команду conn.commit() 4) закрыть соединение 5) открыть соединение, с опцией setAutoCommit(false); 6) заполнить таблицу методом fillDocs 7) выполнить команду conn.commit() 8) закрыть соединение Уважаемые форумчане, просвященные в данном вопросе, подскажите - правильны ли мои доводы? |
||||||||
|
|||||||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Я бы предложил поменять порядок: 1. Открыть соединение 2. Вызвать у него метод setAutoCommit(false); 3. заполнить таблицу методом fillPerson 4. выполнить команду conn.commit() 5. заполнить таблицу методом fillDocs 6. выполнить команду conn.commit() 7. Соединение сохранить и использовать в будущем. Если речь идет о серверном коде, то там часто удобно использовать connection pool. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
SectoR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 5.10.2005 Репутация: нет Всего: нет |
спсб вопрос решен! оказалось нужно использовать PreparedStatement вместо CallableStatement (он используется при работе с процедурами и функциями)
и в данном случае, нумеруются "вопросительные знаки" (нумерация начинается с единицы), а не столбцы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |