Programowanie w języku Java. Bazy danych SQLite w Javie

Podobne dokumenty
Bazy danych SQLite w Javie

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

JAVA I BAZY DANYCH. MATERIAŁY:

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Programowanie komputerów. Wykład 10: Dostęp do baz danych z poziomu aplikacji Java. (JDBC Database Access)

JDBC (Java Database Connectivity vit )

Bazy danych. Polecenia SQL

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński

Język SQL, zajęcia nr 1

Podejście obiektowe do relacyjnych baz danych Hibernate.

Wykład 05 Bazy danych

NARZĘDZIA WIZUALIZACJI

Wykład 8. SQL praca z tabelami 5

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Projektowanie systemów baz danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Hurtownia Świętego Mikołaja projekt bazy danych

akademia androida Składowanie danych część VI

Bartosz Jachnik - Kino

Wykład 6. SQL praca z tabelami 3

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

BAZA DANYCH SIECI HOTELI

Paweł Cieśla. Dokumentacja projektu

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Metody dostępu do danych

Podstawy otwartych języków programowania Java Database Connectivity (JDBC)

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Protokół JDBC współpraca z relacyjnymi bazami danych

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

WTYCZKA FARA-TCM Dane techniczne dla twórców zewnętrznych aplikacji do obsługi map cmentarza

Ref. 7 - Język SQL - polecenia DDL i DML

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Autor: Joanna Karwowska

Bazy danych. Dr inż. Paweł Kasprowski

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Bazy danych. dr inż. Arkadiusz Mirakowski

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Rozdział 9 Obsługa baz danych w języku Java

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

znaleźć wszystkie rekordy dotyczące adresów przy ulicy Hożej (dowolnego miasta!);

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Zaawansowane aplikacje WWW - laboratorium

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Bazy danych 7. SQL podstawy

Łączenie z bazą danych przykładowa klasa infpolaczenie import java.sql.drivermanager; import java.sql.connection; import java.sql.

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Programowanie w języku Java

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Db4o obiektowa baza danych wersja.net

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Wykład 5: PHP: praca z bazą danych MySQL

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wykład 4. SQL praca z tabelami 1

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

PODSTAWY BAZ DANYCH 13. PL/SQL

Metody dostępu do danych

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Instalacja MySQL.

PL/SQL. Zaawansowane tematy PL/SQL

Tworzenie i wykorzystanie usług

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Dostęp do baz danych w ASP.NET.

Programowanie Obiektowe Java

Wykład 5. SQL praca z tabelami 2

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Hibernate mapowanie baz danych

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

15. Funkcje i procedury składowane PL/SQL

Programowanie w Ruby

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie Obiektowe Java

Hibernate. 1. Wprowadzenie. 2. Uruchomienie dostarczonego przykładu. 3. Własny przykład.

JDBC - Obsługa baz danych w języku Java

Dokumentacja SQL API 1

Tworzenie aplikacji w języku Java

Relacyjne bazy danych. Podstawy SQL

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Transkrypt:

Programowanie w języku Java Bazy danych SQLite w Javie

Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android oraz ios. Rozpowszechniana na licencji public domain, może być wykorzystywana bezpłatnie także do zastosowań komercyjnych.

Cechy bazy SQLite Cała baza znajduje się w jednym pliku Baza nie wymaga serwera Posiada wsparcie dla większości poleceń standardu SQL-92 Wspiera transakcje Wydajność jest porównywalna z systemami typu klient-serwer

SQLite nie wspiera Złączenia RIGHT JOIN i FULL OUTER JOIN ALTER TABLE wspierane tylko dla RENAME TABLE oraz ADD COLUMN Wspierane tylko wyzwalacze FOR EACH ROW Widoki dostępne są tylko w trybie READ ONLY Brak poleceń związanych z kontrolą dostępu FOREIGN KEY (klucz zewnętrzny, klucz obcy), czyli pole, którego wartość odpowiada kluczowi głównemu w innej tabeli

Typy kolumn W SQLite zdefiniowane są następujące klasy składowania danych: NULL INTEGER wartość jest liczbą całkowitą (ze znakiem) REAL wartość jest liczbą zmiennoprzecinkową TEXT wartość jest tekstowym łańcuchem znaków. Dopuszczalne kodowanie to UTF-8, UTF-16BE lub UTF-16-LE BLOB binarny obiekt danych

Typ danych jest związany z przechowywaną wartością a nie z typem kolumny. Typ wartości może być inny niż zadeklarowany typ kolumny podczas tworzenia tabeli. Zaleca się jednak zachowanie zgodności typu przechowywanych wartości z typem kolumny, ponieważ ma to wpływ na wydajność podczas sortowania.

Typy kolumn SQLite definiuje następujące typy kolumn: TEXT NUMERIC INTEGER REAL NONE

SQLite w Javie Aby móc korzystać z bazy danych SQLite w Javie, należy zainstalować sterownik jdbc dla bazy SQLite. Można go pobrać pod adresem: https://bitbucket.org/xerial/sqlite-jdbc

Dodawanie sterownika JDBC w środowisku Eclipse Aby dodać sterownik SQLite do projektu tworzonego w środowisku Eclipse należy 1. Kliknąć prawym przyciskiem w projekt na liście projektów 2. Wybrać pozycję properties 3. Kliknąć w pozycję Java build path 4. Przejść do zakładki libraries. 5. Kliknąć przycisk Add External JARs i wskazać lokalizację pobranego pliku sterownika.

Przykład W przykładzie stworzymy aplikację korzystającą bazy danych SQLite. Aplikacja będzie dodawać rekordy oraz wyświetlać listę dodanych rekordów z tabeli klient zawartej w bazie danych sklep.

1. Tworzenie klasy modelu Klasa modelu mapuje dane zawarte w tabeli na obiekty dostępne w programie. Tworzymy pakiet model a następnie dodajemy klasę Klient Każda właściwość klasy Klient powinna posiadać metodę getproperty oraz setproperty np. setimie(string imie), getimie()

package model; public class Klient { private int id; private String imie; private String nazwisko; public int getid() { return id; public void setid(int id) { this.id = id; public String getimie() { return imie; public void setimie(string imie) { this.imie = imie; public String genazwisko() { return nazwisko; public void setautor(string nazwisko) { this.nazwisko = nazwisko; public Klient() { public Klient(int id, String imie, String nazwisko) { this.id = id; this.imie = imie; this.nazwisko = nazwisko; @Override public String tostring() { return "[" + id + "] - " + imie + " - " + nazwisko;

2. Klasa wykonująca operacje na bazie Tworzymy pakiet sklep a w nim klasę Sklep odpowiedzialną za nawiązanie połączenia z bazą oraz wykonywanie operacji na bazie danych.

package sklep; import java.sql.connection; import java.sql.drivermanager; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; import java.util.linkedlist; import java.util.list; import model.klient; public class Sklep { public static final String DRIVER = "org.sqlite.jdbc"; public static final String DB_URL = "jdbc:sqlite:sklep.db"; private Connection conn; private Statement stat; public Sklep() { try { Class.forName(Sklep.DRIVER); catch (ClassNotFoundException e) { System.err.println("Brak sterownika JDBC"); e.printstacktrace(); try { conn = DriverManager.getConnection(DB_URL); stat = conn.createstatement(); catch (SQLException e) { System.err.println("Problem z otwarciem polaczenia"); e.printstacktrace(); createtables();

Konstruktor klasy Sklep inicjalizuje sterownik jdbc a następnie nawiązuje połączenie z bazą danych. Tworzony jest także obiekt klasy Statement, pozwalający na wykonywanie zapytań do bazy danych, za pomocą metody execute(). W kolejnych liniach wywoływana jest metoda createtables, która tworzy tabele w bazie danych.

Metoda insertklinent(string imie, String nazwisko), wstawia do tabeli rekord z danymi przekazanymi jako parametry. Tworzony jest obiekt klasy PreparedStatement, który przygotowuje zapytanie do wykonania. Zapytanie jest prekompilowane przed wykonaniem co przyspiesza operację dodawania rekordu.

public boolean createtables() { String createklient = "CREATE TABLE IF NOT EXISTS klient (id INTEGER PRIMARY KEY AUTOINCREMENT, imie varchar(255), nazwisko varchar(255))"; try { stat.execute(createklient); catch (SQLException e) { System.err.println("Blad przy tworzeniu tabeli"); e.printstacktrace(); return false; return true; public boolean insertklient(string imie, String nazwisko) { try { PreparedStatement prepstmt = conn.preparestatement( "insert into klient values (NULL,?,?);"); prepstmt.setstring(1, imie); prepstmt.setstring(2, nazwisko); prepstmt.execute(); catch (SQLException e) { System.err.println("Blad przy wstawianiu rekordu"); System.out.println(e.getMessage()); return false; return true;

public boolean insertklient(string imie, String nazwisko) { try { PreparedStatement prepstmt = conn.preparestatement( "insert into klient values (NULL,?,?);"); prepstmt.setstring(1, imie); prepstmt.setstring(2, nazwisko); prepstmt.execute(); catch (SQLException e) { System.err.println("Blad przy wstawianiu rekordu"); System.out.println(e.getMessage()); return false; return true; public List<Klient> selectklienci() { List<Klient> klienci = new LinkedList<Klient>(); try { ResultSet result = stat.executequery("select * FROM klient"); int id; String imie, nazwisko; while(result.next()) { id = result.getint("id"); imie = result.getstring("imie"); nazwisko = result.getstring("nazwisko"); klienci.add(new Klient(id, imie, nazwisko)); catch (SQLException e) { e.printstacktrace(); return null; return klienci; public void closeconnection() { try { conn.close(); catch (SQLException e) { System.err.println("Problem z zamknieciem polaczenia"); e.printstacktrace();

Metoda selectklienci() zwraca listę rekordów z tabeli w postaci kolekcji LinkedList. Metoda executequery tworzy obiekt resultset zawierający wyniki zapytania. Następnie za pomoca pętli while tworzone są nowe obiekty klasy klient i dodawane do kolekcji która jest na końcu zwracana.

public boolean deleteklient(int id) { try { PreparedStatement prepstmt = conn.preparestatement( "DELETE FROM klient WHERE id =?;"); prepstmt.setint(1, id); prepstmt.execute(); catch (SQLException e) { System.err.println("Blad przy usuwaniu rekordu"); System.out.println(e.getMessage()); return false; return true; Metoda delete klient usuwa wybranego klienta na podstawie numeru id przekazanego jako parametr.

Metoda closeconnection() zamyka połączenie za bazą danych.

3. Główna klasa programu W folderze src tworzymy klasę Main w której, stworzymy odpowiednie obiekty, dodamy rekordy do tabeli a następnie wyświetlimy ich listę.

import java.util.list; import model.klient; import sklep.sklep; public class Main { public static void main(string[] args) { Sklep b = new Sklep(); b.insertklient("jan", "Kowalski"); b.insertklient("marcin", "Nowak"); b.insertklient("adam", "Małysz"); List<Klient> klienci = b.selectklienci(); System.out.println("Lista klientów: "); for(klient k: klienci) System.out.println(k); b.closeconnection();

Struktura projektu