![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
SherbAnt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.1.2007 Репутация: нет Всего: 3 |
Добрый день, уважаемые.
Такая ситуация. Есть 2 базы данных от разных производителей (Teradata[1] и Derby[2]). Нужно выполнить select запрос к первой и создать таблицу с результатом во второй. Создание таблицы я уже сделал на основе мета-информации из ResultSet. А вот с insert'ом беда. Очень многие нюансы этих двух БД не сходятся. Приходится делать кучу костылей что бы построить валидный запрос. Может я выдумываю велосипед? Подскажите, пожалуйста, какое нибудь более менее готовое решение. Заранее спасибо ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
ORM, например Hibernate. -------------------- 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. |
|||
|
||||
SherbAnt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.1.2007 Репутация: нет Всего: 3 |
Тоже вариант, конечно. Но больно "дорогой". Вторая база по возможности должна быть embedded. Что бы пользователь вообще не заморачивался с ее установкой и настройкой.
Похоже придется писать свой конвертор типов и значений |
|||
|
||||
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. |
|||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Ну это не мешает использовать Hibernate. А вообще, какая может быть беда с Insert? Какие там костыли? Можете подробнее описать? По мне так prepareStatement и вперед. |
|||
|
||||
SherbAnt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.1.2007 Репутация: нет Всего: 3 |
Костыли есть. Ну например у этих баз разный формат хранения Timestamp. Решил проблему переформатированием строки в нужный формат. Далее DerbyDB не знает про такой тип данных как TINYINT. Пришлось вставить проверку типа и возвращать INTEGER. Когда наткнулся на третье несовпадение, сработал внутренний сигнал тревоги. Понял что код обрастает костылями, и решил спросить у знающих людей
![]() Hibernate использовать нельзя, так как ResultSet ко мне приходит снаружи. Я его перехватываю. В общем, написал свой wrapper который оборачивает Type/Value входящего ResultSet'а. Хотя бы размести все костыли в одном месте. Всем спасибо за советы. Тему я помечу как решенную, но если появятся мысли - welcome! С удовольствием перепишу этот ужас по фэншую ![]() Это сообщение отредактировал(а) SherbAnt - 26.1.2011, 18:58 |
|||
|
||||
Temdegon |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Я чего-то не понимаю, по этому и хочу разобраться, т.сказать на будущее.
Не врубаюсь, причем здесь формат хранения. Это проблема базы данных и JDBC. Я подозреваю, вы используете ResultSet У него есть метод
А PreparedStatement есть метод
Какие строки? Какие форматы хранения? Или вы SQL вместе с значениями в строку собираете? То же самое и с TINYINT. Определилсь, что будете использовать вместо него INTEGER, ну так и делайте getInt, SetInt. Я с JDBC мало работал, но мне казалось что там все просто. Сейчас вот закрались сомнения, что я чего-то не догоняю ![]() |
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Кстати для вставки можно использовать непосредственно ResultSet.
-------------------- 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. |
|||
|
||||
SherbAnt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.1.2007 Репутация: нет Всего: 3 |
||||
|
||||
Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: 7 Всего: 9 |
Мммда... Мой вопрос че-то игнорят
![]() |
|||
|
||||
SherbAnt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 12.1.2007 Репутация: нет Всего: 3 |
Не игнорю, просто не часто на форум захожу.
Все замечательно, но как же узнать какой из методов PreparedStatement вызывать? Входящий тип можно получить
Но в PreparedStatement придется либо вызывать setObject(obj) либо организовывать все тот же wrapper который я уже написал. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |