Jak sprawdzić połączenie

0

Witam,

mam kolejny problem. Pisze panelik do konfiguracji aplikacji i po podaniu uzytkownika oraz hasla chcialbym sprawdzić, czy jest wsyztsko ok, czyli czy łączy się z bazą? Nie chce pobierac danych z tabel czy spradzc czy tabele istnieja. Chcialbym to sprawdzic w inny sposób. Może mi ktoś w tym pomóc. Baza Firebird.

Np. mogło by zwracać wersje bazy danych. Wiem jak to zrobić w systemie:
show version;
ale jak zrobic to samo juz po zalogowaniu i po podlaczeniu do bazy danych. Jest jakies polecenie które to realizuje?

Prosze o info.

0

Jedynym rozsądnym testem jest używanie metody isClosed() interfejsu Connection. Można też pingować serwer bazy danych lub przeprowadzać testy connection!=null.
Jednak należy przecztać dokumentację do konkretnego sterownika. Jest szansa że dodano jakieś metody, które na to pozwalają.

0

Czyli np. taką metodę.

    public boolean testBazy() {
        boolean tmp;
        try {
            tmp = !this.connect.isClosed();
        } catch(SQLException e) {
            System.out.println("Nie można przetestować bazy ["+ e.getMessage() + "]");
            tmp = false;
        }
        return tmp;
    }

Tylko nie wiem dlaczego ciągle pokazuje że jest podłączone. Tak to sprawdzam.

        BazaDanych bd = new BazaDanych();
        if(bd.testBazy()) {
            System.out.println("Ok.");
        } else {
            System.out.println("No.");            
        }
        bd.zamknijBaze();

W Properties celowo podaje błędne zmienne konfiguracyjne, ale i tak pokazuje cały czas, że jest połączenie otwarte? Czym to może być spowodowane?

0

Z API klasy Connection:

Retrieves whether this Connection object has been closed. A connection is closed if the method close has been called on it or if certain fatal errors have occurred. This method is guaranteed to return true only when it is called after the method Connection.close has been called.

This method generally cannot be called to determine whether a connection to a database is valid or invalid. A typical client can determine that a connection is invalid by catching any exceptions that might be thrown when an operation is attempted.

Wszystk ona temat

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