Swing, dwie różne bazy DB2

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.

0

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

0

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

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:

 
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ą?

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.

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

//...

dataSource.getConnection();

1 użytkowników online, w tym zalogowanych: 0, gości: 1