2011-10-25 3 views
5

Mam dwie lokalne bazy danych, z którymi próbuję się połączyć, używając klas połączenia Java. Łatwo jest połączyć się z pierwszą bazą danych, używając:Odwołanie do dwóch baz danych za pomocą połączenia w java

public Connection conn; 
conn = DriverManager.getConnection(connectionString); 

Jak dodać drugą bazę danych do tego samego połączenia? Oba są na tym samym serwerze, więc powinno być dość proste, ale nie mogę znaleźć odpowiednich poleceń, aby to zrobić.

Dzięki

+0

dlaczego chcesz połączyć dwie bazy danych z tego samego połączenia? do replikacji? –

+0

Tak, aby można było uruchomić transakcje, które wysyłają zapytania do obu baz danych –

+0

powiedzieć, jeśli masz tabelę 1 w db1 i table2 w db2, więc musisz uruchomić kwerendy łączące tabelę1 i tabelę2? –

Odpowiedz

9

Połączenie to sesja z określoną bazą danych. Nie można używać jednego połączenia do komunikowania się z dwoma różnymi bazami danych; do tego potrzebne są dwa oddzielne połączenia.

Connection conn1 = DriverManager.getConnection(connectionString1); 
Connection conn2 = DriverManager.getConnection(connectionString2); 
+0

To jest obejście, którego używałem, ale miałem nadzieję, że będzie lepszy sposób na zrobienie tego. –

2

Czy próbowałeś:

public Connection conn1; 
conn1 = DriverManager.getConnection(connectionString1); 
public Connection conn2; 
conn2 = DriverManager.getConnection(connectionString2); 
+0

To była praca, miałem nadzieję na coś lepszego –

1
  1. członków instancji nie powinno być publiczne.

  2. Połączenie powinno być zmienną lokalną, a nie członkiem instancji.

Można łączyć się tylko z jedną bazą danych jednocześnie za pomocą pojedynczego połączenia. Ergo potrzebujesz innego połączenia.

+0

Dzięki, ale już podążałem za 1 i 2 w moim kodzie, po prostu uprościłem to dla przykładu tutaj. –

+0

@Zain Nie widzę, jak to wszystko upraszcza. Właściwie to po prostu marnuje twój czas i moje. – EJP

0

Myślę, że do tego celu trzeba użyć J2EE, menedżera transakcji JTA.

+0

Nie. Downvote. – EJP

+0

Korzystanie z 2 połączeń nie jest bezpieczne w transakcjach. Dzięki menedżerowi transakcji JTA można w przejrzysty sposób osiągnąć tę funkcję: http: //stackoverflow.com/questions/1961566/how-to-configure-transaction-management-for-working--2-2-different-db-in -sprin –

+0

Wydawałoby się, że użycie dwóch połączeń nie jest bezpieczne w transakcjach, ale to stwierdzenie to nie to samo, co "musisz użyć". OP nie powiedział nic o bezpieczeństwie transakcji w bazach danych, które są wymogiem, ani o byciu w środowisku J2EE, w którym JTA jest nawet dostępny. – EJP