Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package bazydanychbiblioteka;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.Statement;
- import java.sql.SQLException;
- import java.sql.PreparedStatement;
- import java.util.List;
- import java.util.LinkedList;
- import java.sql.ResultSet;
- public class Biblioteka {
- public static final String DRIVER = "org.sqlite.JDBC";
- public static final String DB_URL = "jdbc:sqlite:biblioteka.db";
- private Connection conn;
- private Statement stat;
- public Biblioteka(){
- try{
- Class.forName(Biblioteka.DRIVER); // zwraca obiekt class związany z podaną klasą
- // próbuje utworzyć obiekt klasy, jeśli się nie da to znaczy że brak sterownika
- // inaczej mówiąc ta linijka jest odpowiedzialna za załadowanie sterownika do systemu
- }catch(ClassNotFoundException e){
- System.err.println("Brak sterownika JDBC");
- e.printStackTrace();
- }
- try{
- conn = DriverManager.getConnection(DB_URL); // próbuje nawiązać połączenie z adresem url bazy danych
- /* jak widać w adresie tym są podane zarówno typ bazy danych, jak i jej nazwa.
- Gdyby była to baza MySQL to ten String mógłby wyglądać tak: jdbc:mysql:sciezkaDoBazyDanychMySQL */
- stat = conn.createStatement(); // tworzy obiekt komunikatu, służący do wysyłania zapytań SQL do bazy danych
- }catch(SQLException e){
- System.err.println("Problem z otwarciem połączenia");
- e.printStackTrace();
- }
- createTables();
- }
- public boolean createTables(){
- String createCzytelnicy = "CREATE TABLE IF NOT EXISTS czytelnicy (id_czytelnika INTEGER PRIMARY KEY AUTOINCREMENT, imie varchar(255), nazwisko varchar(255), pesel varchar(255))";
- String createKsiazki = "CREATE TABLE IF NOT EXISTS ksiazki(id_ksiazki INTEGER PRIMARY KEY AUTOINCREMENT, tytul varchar(255), autor varchar(255))";
- String createWypozyczenia = "CREATE TABLE IF NOT EXISTS wypozyczenia (id_wypozycz INTEGER PRIMARY KEY AUTOINCREMENT, id_czytelnika int, id_ksiazki int)";
- try{
- stat.execute(createCzytelnicy); // wykonuje instrukcję SQL
- stat.execute(createKsiazki);
- stat.execute(createWypozyczenia);
- }catch(SQLException e){
- System.err.println("Błąd przy tworzeniu tabeli");
- e.printStackTrace();
- return false;
- }
- return true;
- }
- public boolean insertCzytelnik(String imie, String nazwisko, String pesel){
- try{
- PreparedStatement prepStmt = conn.prepareStatement("insert into czytelnicy values (NULL, ?, ?, ?);");
- // tworzy obiekt gotowego zapytania, który służy do wysyłania sparametryzowanych zapytań SQL do bazy danych
- prepStmt.setString(1, imie); // ustawia wyznaczony parametr (wstawia go w miejsce ?)
- prepStmt.setString(2, nazwisko);
- prepStmt.setString(3, pesel);
- prepStmt.execute();
- }catch(SQLException e){
- System.err.println("Błąd przy wstawianiu czytelnika");
- e.printStackTrace();
- return false;
- }
- return true;
- }
- public boolean insertKsiazka(String tytul, String autor){
- try{
- PreparedStatement prepStmt = conn.prepareStatement("insert into ksiazki values (NULL, ?, ?);");
- prepStmt.setString(1, tytul);
- prepStmt.setString(2, autor);
- prepStmt.execute();
- }catch(SQLException e){
- System.err.println("Błąd przy wypozyczaniu");
- e.printStackTrace();
- return false;
- }
- return true;
- }
- public boolean insertWypozycz(int idCzytelnik, int idKsiazka){
- try{
- PreparedStatement prepStmt = conn.prepareStatement("insert into wypozyczenia values (NULL, ?, ?);");
- prepStmt.setInt(1, idCzytelnik);
- prepStmt.setInt(2, idKsiazka);
- prepStmt.execute();
- }catch(SQLException e){
- System.err.println("Błąd przy wypozyczaniu");
- return false;
- }
- return true;
- }
- public List<Czytelnik> selectCzytelnicy(){
- List<Czytelnik> czytelnicy = new LinkedList();
- try{
- ResultSet result = stat.executeQuery("SELECT * FROM czytelnicy");
- /* zwraca obiekt typu ResultSet, który zawiera odpowiedzi na podane zapytanie.
- Mimo nazwy obiekt ten przypomina bardziej tabelę niż zbiór. Początek jest ustawiony na pierwszym wierszu. */
- int id;
- String imie, nazwisko, pesel;
- while(result.next()){ // przechodzi do kolejnego rzędu (wiersza) i jeśli się nie da to zwraca false
- id = result.getInt("id_czytelnika"); // pobiera wartość typu int
- imie = result.getString("imie");
- nazwisko = result.getString("nazwisko");
- pesel = result.getString("pesel");
- czytelnicy.add(new Czytelnik(id, imie, nazwisko, pesel));
- }
- }catch(SQLException e){
- e.printStackTrace();
- return null;
- }
- return czytelnicy;
- }
- public List<Ksiazka> selectKsiazki(){
- List<Ksiazka> ksiazki = new LinkedList();
- try{
- ResultSet result = stat.executeQuery("SELECT * FROM ksiazki");
- int id;
- String tytul, autor;
- while(result.next()){
- id = result.getInt("id_ksiazki");
- tytul = result.getString("tytul");
- autor = result.getString("autor");
- ksiazki.add(new Ksiazka(id, tytul, autor));
- }
- }catch(SQLException e){
- e.printStackTrace();
- return null;
- }
- return ksiazki;
- }
- public void closeConnection(){
- try{
- conn.close(); // zamyka połączenie z bazą danych
- }catch(SQLException e){
- System.err.println("Problem z zamknięciem połączenia");
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement