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//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//localhost:3050//opt/firebird/bazy/inz.fdb
Czyli jeszcze jeden ukośnik. W innych bazach go nie ma, stąd moja pomyłka.

0

Uruchomiłem, ale to było coś nie związane z Firebirdem. A teraz mam nowy problem, cos się sadzi o otwieranie plików.

Problem podczas łaczenia z bazą danych [GDS Exception. 335544344. I/O error for file %.0s"open"
null
Error while trying to open file
null
Reason: I/O error for file %.0s"open"
null
Error while trying to open file
null]
Problem z zamknięciem połączenia bazy danych [null]
BUILD SUCCESSFUL (total time: 1 second)

Plik jest, prawa takiejka powinny być. Inne aplikacje z tego okzystają, a co z JAVA?

0

To teraz, to już nie wiem. Może być za małe prawo dla użytkownika na jakim chodzi program, więc dałbym testowo 777. Poza tym kwestia, czy wersja sterownika jest do tej wersji bazy? Czasem warto sprawdzić takie szczegóły. No i jeszcze pozamykaj inne połączenia z tą bazą, jak jakoweś istnieją.

0

Dzięki bardzo. Wszystko już działa. Mam nainstalowane wszystkiego pełno i sam sobie jestem winien. Usługi się kłóca i w ogóle. Bardzo dzieki za pomoc.

Miłej nocy. Pozdrawiam.

0

fraktal mam prośbę. czy mógłbyś napisać co dokładnie zrobiłeś, aby uporać się z tym ostatnim probleme, czyli dostępem do bazy. proszę ponieważ mam ten sam problem - te same błędy o I/O

0

@fraktal nie napisze bo się wstydzi, usiłować się łączyć z bazą danych, ale nie włączył serwera (nie uruchomił Firebirda).

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