Перейти к содержанию

JDBC. Одним запросом с двумя базами


Рекомендуемые сообщения

Имеются две MS SQL базы bd1 и bd2. Логин=al. Пароль=1.

В bd1 есть таблица dbo.vf1 со столбцами (tab,fio,oklad,stazh)

В bd2 есть таблица dbo.vf2 со столбцами (tab,pol,sem_p)

Необходимо провести соединение по значению tab.

Пишу на JAVA. К базам подключаюсь через JDBC напрямую.

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

String url = new String("jdbc:sqlserver://127.0.0.1:1433;user=al;password=1");//без указания БД

А вот и сам запрос:

ResultSet rs = st.executeQuery("SELECT a.tab, a.fio, a.oklad, a.stazh, b.pol, b.sem_p FROM bd1.dbo.vf1 a, bd2.dbo.vf2 b WHERE a.tab = b.tab");

Всё работает! Но обе базы находятся на локальном компьютере. Что нужно исправить, если bd2 будет находиться на сетевом компьютере?

Ссылка на комментарий

ResultSet rs = st.executeQuery("SELECT table1.tab, table1.fio, table1.oklad, table1.stazh, table2.pol, table2.sem_p FROM bd1.dbo.vf1 table1, bd2.dbo.vf2 table2 WHERE table1.tab = table2.tab");

ну можно так=)

хм...

String url = new String("jdbc:sqlserver://127.0.0.1:1433;user=al;password=1")

а здесь нельзя просто указать нужный ip. Ну если нет то можно создать тунель с сетевого компа и работать как с локальной.

Ссылка на комментарий

Про первую проблему: не мог разобраться, как создал тему, разобрался сам)) Исправил, но Lakers меня опередил) Но вопрос про сеть остаётся открытым

а здесь нельзя просто указать нужный ip.

Ну укажу сетевой. Как связаться с локальной базой?

Ну если нет то можно создать тунель с сетевого компа и работать как с локальной.

Что за тунель? Осуществляется средствами MS SQL?

Вообще мне это представляется аналогично первой проблеме, в разделе FORM указать не только БД, но ip. Наверное.

Ссылка на комментарий

туннель можно создать программой PuTTY.

Здесь одним запросом, как мне кажется, не обойтись. И проблемы возникают из-за неправильной структуры БД, советую её пересмотреть, хорошо бы портировать эти данные в одну БД и не мучится.

Ссылка на комментарий

ODBC драйвер содержит список баз, но одна по умолчанию. Обращается непосредственно к ней, к другим базам обращается через имя базы.

Вот мне интересно стало: есть два драйвера, можно ли их объединить, что бы подключившись к одной, можно было видеть базы другой? Средствами windows

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...