Swing, dwie różne bazy DB2

Swing, dwie różne bazy DB2
RA
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 13 lat
0

Witam,
potrzebne jest mi połączenie w jednej aplikacji do dwóch baz DB2 (7.2 i 9.x) w celu okresowego synchronizowania tabel. Pojedynczo łączę sie z bazami bez problemu, ale jak najpierw połączę sie z bazą 7.2, to nie mogę potem połączyć się z bazą 9.x i odwrotnie: jak połączę się najpierw z 9.x, to potem nie połączę się z 7.2. Aby połączyć sie ponownie z bazą muszę wyrzucić proces programu z menadżera zadań windowsa. Do DB2 7.2 uzywam biblioteki db2java.zip, a do DB2 9.x db2jcc.jar.

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:15 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Pokaż kod łączący z bazą danych, bo coś czuję, że drivery gryzą się przy tworzeniu połączeń.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
RA
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 13 lat
0

Jest to zwykle załadowanie sterownika i połączenie się z bazą:
Główne części kodu:
DB2 7.2:

Kopiuj
String server = "xxx.xxx.xxx.xxx";
String serverPort = "6789";
String dbName = "test7";
String user = "user7";
String pass = "pass7";

Class.forName("COM.ibm.db2.jdbc.net.DB2Driver");
Connection connection = DriverManager.getConnection("jdbc:db2://"+server+":"+serverPort+"/"+dbName, user, pass);

DB2 9.x:

Kopiuj
 
String server = "xxx.xxx.xxx.xxx";
String serverPort = "50001";
String dbName = "test9";
String user = "user9";
String pass = "pass9";

Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection connection = DriverManager.getConnection("jdbc:db2://"+server+":"+serverPort+"/"+dbName, user, pass);

Ogólnie to tak wygląda. Normalnie obsługe bazy mam w osobnych klasach, ale schemat ideowy jest identyczny.

0

A zamykasz gdzieś połączenie z bazą?

RA
Transakcyjnosc, zwalnianie zasobow, zamykanie połączeń też jest. Tu pokazałem tylko kawełek kodu do nawiązania samego połączenia, a nie pełnej obsługi bazy. Pozdr
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:15 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
0

Oba sterowniki rejestrują się do tego samego protokołu jdbc:db2 i DriverManager odrzuca jeden z nich. Alternatywą dla DriverManagera jest interfejs DataSource (przykładowo z pakietu Apache DBCP> http://commons.apache.org/dbcp/ ). Pozawala on na uzyskiwanie połączeń dla różnych wersji sterownika w ramach tego samego protokołu jdbc.

Kopiuj
DataSource dataSource = new BasicDataSourceFactory().createDataSource(properties)

//...

dataSource.getConnection();

Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
RA
Dzięki za wskazówkę. Zaraz zacznę zapoznawać się z projektem. Pozdr

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.