• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem z zapytaniami sqlite jdbc

VPS Starter Arubacloud
0 głosów
526 wizyt
pytanie zadane 3 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)

Hejka znajdzie mi ktoś błąd? :/ Cały czas wyświetla mi komunikaty z wyjątków:

public void insertWypozyczone(int idczytelnika, int idksiazki)
	{
		try
		{
			PreparedStatement preparedStatement = connection
					.prepareStatement("INSERT INTO wypozyczenia VALUES(NULL, ? ?)");
			preparedStatement.setInt(1, idczytelnika);
			preparedStatement.setInt(2, idksiazki);
			preparedStatement.execute();
		} catch (SQLException e)
		{
			System.err.println("Błąd przy wypożyczeniu !\n");
		}
	}
public void wypozyczKsiazke(int idczytelnika, int idksiazki)
    {
        insertWypozyczone(idczytelnika, idksiazki);
        try
        {
            statement.executeUpdate("UPDATE ksiazki SET czyJest = FALSE where id_ksiazki=idksiazki");
            System.out.println("Miłego czytania !\n");
        } catch (SQLException e)
        {
            System.err.println("Wystąpił problem z operacją wypożyczenia !\n");
        }

    }

 

komentarz 3 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Pokaż metodę odpowiadają za komunikację z DB.
komentarz 3 czerwca 2018 przez Adrian Paź Obywatel (1,270 p.)

Nie za bardzo wiem o co chodzi. Ale działa to tak:

System.out.println("Znajdz czytelnika:\n");
					biblioteka.listaCzytelnikow();
					int idczytelnika = scanner.nextInt();
					System.out.println("\nJaka książka Cię interesuje?\n");
					biblioteka.księgozbiór();
					int idksiazki = scanner.nextInt();
					biblioteka.wypozyczKsiazke(idczytelnika, idksiazki);
public void wypozyczKsiazke(int idczytelnika, int idksiazki)
	{
		insertWypozyczone(idczytelnika, idksiazki);
		try
		{
			PreparedStatement preparedStatement = connection
					.prepareStatement("UPDATE ksiazki set czyJest = ? where id_ksiazki = ?");
			preparedStatement.setBoolean(1, false);
			preparedStatement.setInt(2, idksiazki);
			preparedStatement.execute();
			System.out.println("Miłego czytania !\n");
		} catch (SQLException e)
		{
			System.err.println("Wystąpił problem z operacją wypożyczenia !\n");
		}

	}
public void insertWypozyczone(int idczytelnika, int idksiazki)
	{
		try
		{
			PreparedStatement preparedStatement = connection
					.prepareStatement("INSERT INTO wypozyczenia VALUES(NULL, ? ?)");
			preparedStatement.setInt(1, idczytelnika);
			preparedStatement.setInt(2, idksiazki);
			preparedStatement.execute();
		} catch (SQLException e)
		{
			System.err.println(e);
		}
	}

 

komentarz 3 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
komentarz 3 czerwca 2018 przez Adrian Paź Obywatel (1,270 p.)
public static final String DRIVER = "org.sqlite.JDBC";

	public static final String URL = "jdbc:sqlite:biblioteka.db";

	private Connection connection = null;
	private Statement statement = null;

	public Biblioteka()
	{
		try
		{
			Class.forName(DRIVER);
			connection = DriverManager.getConnection(URL);
			statement = connection.createStatement();
		} catch (ClassNotFoundException e)
		{
			System.err.println("Nie udało się nawiązać połączenia z bazą danych !\n");
		} catch (SQLException e)
		{
			System.err.println("Nie udało się załadowac sterownika JDBC !\n");
		}
		createTable();
	}

	public void createTable()
	{
		String createCzytelnicy = "CREATE TABLE IF NOT EXISTS czytelnicy(id_czytelnika INTEGER PRIMARY KEY AUTOINCREMENT, imie VARCHAR(20), nazwisko VARCHAR(20), login VARCHAR(10))";
		String createKsiazki = "CREATE TABLE IF NOT EXISTS ksiazki(id_ksiazki INTEGER PRIMARY KEY AUTOINCREMENT, tytul VARCHAR(20), autor VARCHAR(20), czyJest BOOLEAN)";
		String createWypozyczenia = "CREATE TABLE IF NOT EXISTS wypozyczenia(id_wypozycz INTEGER PRIMARY KEY AUTOINCREMENT, id_czytelnika INTEGER, id_ksiazki INTEGER)";
		try
		{
			statement.execute(createCzytelnicy);
			statement.execute(createKsiazki);
			statement.execute(createWypozyczenia);
		} catch (SQLException e)
		{
			System.err.println("Błąd przy tworzeniu tabel !\n");
		}
	}

 

komentarz 3 czerwca 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Na który wiersz wskazuje błąd?

1 odpowiedź

0 głosów
odpowiedź 4 czerwca 2018 przez adam1297 Użytkownik (630 p.)
Może ten NULL którego próbujesz wsadzić do "wypożyczen" coś wadzi, z tego co pamiętam  "identity column"sie po prostu pomija przy wstawianiu nowych rekordów

Podobne pytania

0 głosów
1 odpowiedź 241 wizyt
pytanie zadane 3 czerwca 2018 w Java przez Adrian Paź Obywatel (1,270 p.)
0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 21 sierpnia 2017 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 6 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...