Baza danych SQLite i JAVA

0

Mam taki problem

Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Michal\\Documents\\NetBeansProjects\\Logowanie\\src\\logowanie\\uzytkownicyfaktur.db");

Mam podaną tam ścieżkę do mojego pliku bazodanowego na moim komputerze:
C:\\Users\\Michal\\Documents\\NetBeansProjects\\Logowanie\\src\\logowanie\\uzytkownicyfaktur.db

ale jak zrobię jara i dam program komuś innemu na innym komputerze to ta ścieżka będzie zła.

Mam pytanie, czy mogę mój plik z bazą trzymać w plikach projektu, czy to nie zadziała, bo jak robię coś takiego:

Connection conn = DriverManager.getConnection("jdbc:sqlite:uzytkownicyfaktur.db");

plik mam w tym samym pakiecie co tą klasę to daje błąd: No such tables.

Od razu mówię że błędu chyba nie ma bo jak daję normalną ścieżkę C:\\Users\\Michal\\Documents\\NetBeansProjects\\Logowanie\\src\\logowanie\\uzytkownicyfaktur.db
to wszystko działa prawidlowo i poprawnie program łączy sie z bazą, problem zaczyna się gdy wpiszę tam tą drugą wersję.

Próbowałem też tak że mam plik w tym samym pakiecie co klasa i coś takiego:
Connection conn = DriverManager.getConnection("jdbc:sqlite:");

żeby wyłapała domyślnie ten plik ale to nic nie daje

Oto kod klasy odpowiadającej za połączenie z SQLite:

package logowanie;


import java.sql.*;
import javax.swing.*;

public class javaconnect {

    Connection conn = null;
    

    public static Connection ConnecrDb() {
        try {
            Class.forName("org.sqlite.JDBC");
        
            Connection conn = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Michal\\Documents\\NetBeansProjects\\Logowanie\\src\\logowanie\\uzytkownicyfaktur.db");
           
            
            return conn;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
            return null;

        }

    }

}
0
gmd55 napisał(a):

Connection conn = DriverManager.getConnection("jdbcuzytkownicyfaktur.db");

To powinno otworzyć plik uzytkownicyfaktur.db znajdujący się w katalogu roboczym twojej aplikacji.

To czym jest katalog roboczy zależy od tego jak odpalasz aplikację. Jak odpalasz z Netbeans'a to katalog roboczy możesz skonfigurować w ustawieniach uruchamiania.

Odpalając jar'a z konsoli przy użyciu java -jar ... twoim katalogiem roboczym będzie katalog w którym obecnie znajdowałeś się w konsoli.
Jak odpalasz dwuklikiem jara to bodajże jako katalog roboczy przyjmowany jest katalog, w którym jest jar.

Patrząc po tym że plik bazy masz w katalogu src to totalnie źle do tego podchodzić. Bo jeżeli ci ten plik budowanie projektu zassie do jar'a to wiedz że pliki w paczce jar nie mogą być modyfikowane w trakcie działania aplikacji. poza tym sterownik sqlite nawet nie będzie ich szukał w jarze.

PS. Katalog roboczy możesz sobie sprawdzić podczas uruchamiania aplikacji przy pomocy System.out.println(System.getProperty("user.dir"))

0

dziękuję za odpowiedź, działa :)

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