Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> паралельно выполняемые SQL запросы 
:(
    Опции темы
barin_Student
Дата 24.9.2009, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Вообщем у меня такая штука:
Код

public void insertNewRecord(String record){
   
}
public void deleteRecord(int id_record){
}
ect....

Есть один класс который реализует работу с таблицами, resultSet и statement один раз определяються, и дальше пошла работа вида: с потоков демонов обращаються к этому классу ассинхронно, то есть вариант что еще прошлый запрос не доконца отработал и тут другой класс стучиться для нового запроса, и я думаю из за этого у меня такая ошибка:
Operation not allowed after ResultSet closed
к итогу, от чаго генериться такая ошибка? и как организовать решение моей задачи? Сорри за коряво заданный вопрос smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
garbuz
Дата 24.9.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 3
Всего: 11



Я далеко не спец в потоках, но разве join не для этого?
PM MAIL   Вверх
olexande
Дата 24.9.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 25.11.2004
Где: Киев

Репутация: нет
Всего: нет



Может попробовать организовать в режиме "потоков и блокировок" - При вызове "ф-ции" устанавливается блокировка, при окончании - снимается ...
В теле "ф-ции" организовать проверку есть-ли (установлена-ли) блокировка. Если блокировка не установлена, то можно "заходить" в "ф-цию".

Это если делать вручную.
PM MAIL ICQ   Вверх
barin_Student
Дата 24.9.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



Цитата(olexande @ 24.9.2009,  12:32)
Может попробовать организовать в режиме "потоков и блокировок" - При вызове "ф-ции" устанавливается блокировка, при окончании - снимается ...
В теле "ф-ции" организовать проверку есть-ли (установлена-ли) блокировка. Если блокировка не установлена, то можно "заходить" в "ф-цию".

Это если делать вручную.

Светофоры не подойдут))) smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
Shurr
Дата 25.9.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 24.10.2006

Репутация: 5
Всего: 7



Собственно проблема в параллельном доступе к ресурсам, которые такого режима работы не подразумевают.

Вариант номер один - просто-напросто синхронизировать все методы класса, работающего с БД, чтобы вся работа с ним шла последовательно. Если это приводит к неприемлемому падению производительности - тогда надо делать пул из таких классов, и выдать каждому его инстансу по коннекшену; или создавать инстанс класса для работы с БД каждый раз, но использовать пул коннекшнов.
PM MAIL   Вверх
duk
Дата 25.9.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: 4
Всего: 4



Самый разумный вариант, как по мне синхронизировать методы. Можно, правда, SQL команды записывать в список (addBatch(String sql)) и в определенное время выполнять.
PM MAIL   Вверх
barin_Student
Дата 1.10.2009, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

Репутация: 1
Всего: 2



а если я для каждого класса определю свой statement ? можно ли будет паралельно работать с данными?


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.