Advertisement
Guest User

Untitled

a guest
May 3rd, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.12 KB | None | 0 0
  1. package bazydanychbiblioteka;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.Statement;
  5. import java.sql.SQLException;
  6. import java.sql.PreparedStatement;
  7. import java.util.List;
  8. import java.util.LinkedList;
  9. import java.sql.ResultSet;
  10. public class Biblioteka {
  11. public static final String DRIVER = "org.sqlite.JDBC";
  12. public static final String DB_URL = "jdbc:sqlite:biblioteka.db";
  13. private Connection conn;
  14. private Statement stat;
  15. public Biblioteka(){
  16. try{
  17. Class.forName(Biblioteka.DRIVER); // zwraca obiekt class związany z podaną klasą
  18. // próbuje utworzyć obiekt klasy, jeśli się nie da to znaczy że brak sterownika
  19. // inaczej mówiąc ta linijka jest odpowiedzialna za załadowanie sterownika do systemu
  20. }catch(ClassNotFoundException e){
  21. System.err.println("Brak sterownika JDBC");
  22. e.printStackTrace();
  23. }
  24. try{
  25. conn = DriverManager.getConnection(DB_URL); // próbuje nawiązać połączenie z adresem url bazy danych
  26. /* jak widać w adresie tym są podane zarówno typ bazy danych, jak i jej nazwa.
  27. Gdyby była to baza MySQL to ten String mógłby wyglądać tak: jdbc:mysql:sciezkaDoBazyDanychMySQL */
  28. stat = conn.createStatement(); // tworzy obiekt komunikatu, służący do wysyłania zapytań SQL do bazy danych
  29. }catch(SQLException e){
  30. System.err.println("Problem z otwarciem połączenia");
  31. e.printStackTrace();
  32. }
  33. createTables();
  34. }
  35. public boolean createTables(){
  36. String createCzytelnicy = "CREATE TABLE IF NOT EXISTS czytelnicy (id_czytelnika INTEGER PRIMARY KEY AUTOINCREMENT, imie varchar(255), nazwisko varchar(255), pesel varchar(255))";
  37. String createKsiazki = "CREATE TABLE IF NOT EXISTS ksiazki(id_ksiazki INTEGER PRIMARY KEY AUTOINCREMENT, tytul varchar(255), autor varchar(255))";
  38. String createWypozyczenia = "CREATE TABLE IF NOT EXISTS wypozyczenia (id_wypozycz INTEGER PRIMARY KEY AUTOINCREMENT, id_czytelnika int, id_ksiazki int)";
  39. try{
  40. stat.execute(createCzytelnicy); // wykonuje instrukcję SQL
  41. stat.execute(createKsiazki);
  42. stat.execute(createWypozyczenia);
  43. }catch(SQLException e){
  44. System.err.println("Błąd przy tworzeniu tabeli");
  45. e.printStackTrace();
  46. return false;
  47. }
  48. return true;
  49. }
  50. public boolean insertCzytelnik(String imie, String nazwisko, String pesel){
  51. try{
  52. PreparedStatement prepStmt = conn.prepareStatement("insert into czytelnicy values (NULL, ?, ?, ?);");
  53. // tworzy obiekt gotowego zapytania, który służy do wysyłania sparametryzowanych zapytań SQL do bazy danych
  54. prepStmt.setString(1, imie); // ustawia wyznaczony parametr (wstawia go w miejsce ?)
  55. prepStmt.setString(2, nazwisko);
  56. prepStmt.setString(3, pesel);
  57. prepStmt.execute();
  58. }catch(SQLException e){
  59. System.err.println("Błąd przy wstawianiu czytelnika");
  60. e.printStackTrace();
  61. return false;
  62. }
  63. return true;
  64. }
  65. public boolean insertKsiazka(String tytul, String autor){
  66. try{
  67. PreparedStatement prepStmt = conn.prepareStatement("insert into ksiazki values (NULL, ?, ?);");
  68. prepStmt.setString(1, tytul);
  69. prepStmt.setString(2, autor);
  70. prepStmt.execute();
  71. }catch(SQLException e){
  72. System.err.println("Błąd przy wypozyczaniu");
  73. e.printStackTrace();
  74. return false;
  75. }
  76. return true;
  77. }
  78. public boolean insertWypozycz(int idCzytelnik, int idKsiazka){
  79. try{
  80. PreparedStatement prepStmt = conn.prepareStatement("insert into wypozyczenia values (NULL, ?, ?);");
  81. prepStmt.setInt(1, idCzytelnik);
  82. prepStmt.setInt(2, idKsiazka);
  83. prepStmt.execute();
  84. }catch(SQLException e){
  85. System.err.println("Błąd przy wypozyczaniu");
  86. return false;
  87. }
  88. return true;
  89. }
  90. public List<Czytelnik> selectCzytelnicy(){
  91. List<Czytelnik> czytelnicy = new LinkedList();
  92. try{
  93. ResultSet result = stat.executeQuery("SELECT * FROM czytelnicy");
  94. /* zwraca obiekt typu ResultSet, który zawiera odpowiedzi na podane zapytanie.
  95. Mimo nazwy obiekt ten przypomina bardziej tabelę niż zbiór. Początek jest ustawiony na pierwszym wierszu. */
  96. int id;
  97. String imie, nazwisko, pesel;
  98. while(result.next()){ // przechodzi do kolejnego rzędu (wiersza) i jeśli się nie da to zwraca false
  99. id = result.getInt("id_czytelnika"); // pobiera wartość typu int
  100. imie = result.getString("imie");
  101. nazwisko = result.getString("nazwisko");
  102. pesel = result.getString("pesel");
  103. czytelnicy.add(new Czytelnik(id, imie, nazwisko, pesel));
  104. }
  105. }catch(SQLException e){
  106. e.printStackTrace();
  107. return null;
  108. }
  109. return czytelnicy;
  110. }
  111. public List<Ksiazka> selectKsiazki(){
  112. List<Ksiazka> ksiazki = new LinkedList();
  113. try{
  114. ResultSet result = stat.executeQuery("SELECT * FROM ksiazki");
  115. int id;
  116. String tytul, autor;
  117. while(result.next()){
  118. id = result.getInt("id_ksiazki");
  119. tytul = result.getString("tytul");
  120. autor = result.getString("autor");
  121. ksiazki.add(new Ksiazka(id, tytul, autor));
  122. }
  123. }catch(SQLException e){
  124. e.printStackTrace();
  125. return null;
  126. }
  127. return ksiazki;
  128. }
  129. public void closeConnection(){
  130. try{
  131. conn.close(); // zamyka połączenie z bazą danych
  132. }catch(SQLException e){
  133. System.err.println("Problem z zamknięciem połączenia");
  134. e.printStackTrace();
  135. }
  136. }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement