Java 1.5.x + sterownik Firebird

0

Witam,

pracuje w srodowisku Linux-a nad klasą do obsługi bazy danych. A mianowicie jest to Firebird. PObrałem sterownik ze strony producenta. Załadaowałem i jest Ok.

Problem jest następujący. W momencie uruchomienia skryptu:

package inzynierka;
public class Main {
    public Main() {
    }
    public static void main(String[] args) {
        BazaDanych bd = new BazaDanych("fraktal", "/opt/firebird/bazy/inz.fdb", "SYSDBA", "masterkey");
        bd.zamknijBaze();
    }  
}

na klasie:

package inzynierka;
import java.sql.*;

public class BazaDanych {    
    private String host;
    private String sciezka;
    private String uzytkownik;
    private String haslo;
    private Connection connect;
    private Statement stm;
    private ResultSet rs;

    public BazaDanych(String host, String sciezka, String uzytkownik, String haslo) {
        this.host = host;
        this.sciezka = sciezka;
        this.uzytkownik = uzytkownik;
        this.haslo = haslo;
        try {
                Class.forName("org.firebirdsql.jdbc.FBDriver");
        }
        catch(java.lang.ClassNotFoundException e) {
                System.out.println("Nie mogę odnaleźć klasy [" + e.getMessage() + "]");
                return;
        }        
        try {
            this.connect = DriverManager.getConnection("jdbc:firebirdsql:"+ this.host + ":"+ this.sciezka, this.uzytkownik, this.haslo);
            this.stm = this.connect.createStatement();
            this.rs = null;
        } catch (Exception e) {
            System.out.println("Problem podczas łaczenia z bazą danych [" + e.getMessage() + "]");
        } 
    }  
    public boolean zamknijBaze() {
        try { 
            this.connect.close();
            return true;
        } catch(Exception e) {
            System.out.println("Problem z zamknięciem połączenia bazy danych [" + e.getMessage() + "]");
        }
        return false;
    }
}

dostaję następujący błąd.

Problem podczas łaczenia z bazą danych [GDS Exception. 335544721. Unable to complete network request to host "fraktal".
Reason: Unable to complete network request to host "fraktal".]
Problem z zamknięciem połączenia bazy danych [null]
BUILD SUCCESSFUL (total time: 1 second)

chociaż fraktal jest nazwą maszyny(hosta, jak kto woli) na którym ejst to uruchamiane. Baza i Java chodzi na jednej maszynie. Środowisko Netbeans 5.0. Próbowałem już wpisywać i localhost i adres IP, nie wiem już jak do tego podejść. A może jest to błąd wynikajacy z czegoś innego?

Proszę o pomoc.

0

127.0.0.1 i podniesione lo musi zadzialac

pozdrawiam

0

127.0.0.1 i podniesione lo musi zadzialac

Jest tak i tez nic. Teraz zmieniłem na cos takiego.

...
this.connect = DriverManager.getConnection("jdbc:firebirdsql://"+ this.host + ":" + this.sciezka, this.uzytkownik, this.haslo);
...

i błąd jest następujący:

Problem podczas łaczenia z bazą danych [GDS Exception. 0. Bad server string: ':' at beginning or end of: fraktal:335544323
Reason: Bad server string: ':' at beginning or end of: fraktal:335544323]
Problem z zamknięciem połączenia bazy danych [null]
BUILD SUCCESSFUL (total time: 1 second)

Nie wiem co jest grane, na Windowsie chodziło w tej pierwszej postaci.</quote>

0

this.connect = DriverManager.getConnection("jdbc:firebirdsql://"+ this.host + this.sciezka, this.uzytkownik, this.haslo);
Spróbuj tak, w każdym razie po nazwie hosta nazwa bazy nie powinna być po znaku : . Po dwukropku podaje się ewentualnie port, ale można zostawić puste i będzie na domyślnym.

0

Niestety nic nie działa. Próbowałem juz takich rzeczy, że .... Nie wiem czym to może byc spowodowane? Jak się łącze przez konsolę to wszystko chodzi ok. Usługa firebird działa, jest Ok. A co do JAVA jestem głupi. Na Windows było ok, ale Windows to głupie zwierze.

Ktoś ma jeszcze jakieś pomysły?

0

Na moje, to coś jest nie tak z pierwszym parametrem w getConnection. Zamiast robić tam kombinacje z łączeniem stringów zadeklaruj jakiś string przed wywołaniem, wpisz w niego adres i podaj go jako parametr. Dodatkowo, jeżeli będzie błąd, to catch wyświetl ten string, będzie wtedy wiadomo jak on się na prawdę poskładał.

0

Ja już nie wiem. Zrobiłem według Twojej namowy. Wyszło tak:

        String _host = null;
        try {
            //("//localhost:3050/dir1/subdir/myDatabase.gdb"); nowy format
            _host = "jdbc:firebirdsql:"+ this.host + "/" + this.port + ":" + this.sciezka;
            //("localhost/3050:/dir1/subdir/myDatabase.gdb"); stary format
            this.connect = DriverManager.getConnection(_host, this.uzytkownik, this.haslo);
            this.stm = this.connect.createStatement();
            this.rs = null;
        } catch (Exception e) {
            System.out.println("Problem podczas łaczenia z bazą danych [" + e.getMessage() + "]");
            System.out.println(_host);
        }

i błąd:

Problem podczas łaczenia z bazą danych [GDS Exception. 335544721. Unable to complete network request to host "localhost".
Reason: Unable to complete network request to host "localhost".]
jdbc:firebirdsql:localhost/3050:/opt/firebird/bazy/inz.fdb
Problem z zamknięciem połączenia bazy danych [null]
BUILD SUCCESSFUL (total time: 1 second)

Próbowałem obie notacje. Obie nieskuteczne. Ale ten błąd jakiś taki dziwny, jak by nie wynikał z JAVA tylko jkaby się nie mŋół z serwerem połączyć. Może trzeba jakaś prostą konfigurację zrobić, aby tak działało?

Ma ktoś jeszcze jakiś pomysł?

0

jdbc:firebirdsql:localhost/3050:/opt/firebird/bazy/inz.fdb
To na pewno jest źle. Zrób tak, żeby w tym tekście było:
jdbc:firebirdsql://localhost:3050/opt/firebird/bazy/inz.fdb

0

Próbowałem obie konwencje. Nie działa. Co radzisz? Ja już nad tym siedze z 4 godziny, jak nie dłużej i szaleje już [glowa] .

0

Ale jak, masz teraz dokładnie taki błąd, że jest w nim wypisany taki adres:
jdbc:firebirdsql://localhost:3050/opt/firebird/bazy/inz.fdb ?
Jak tak jest, to jeszcze do sprawdzenia prawa dostępu do pliku.

Drobny błąd z mojej strony (ale istotny). Powinno być:
jdbc:firebirdsql://localhost:3050//opt/firebird/bazy/inz.fdb
Czyli jeszcze jeden ukośnik. W innych bazach go nie ma, stąd moja pomyłka.

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