Java Database Connectivity (JDBC)
na tomto cvičení se budeme zabývat JDBC, což je rozhranní (API) pro práci a přístup k databázím. Nejdříve si vytvořte jednoduchý příklad na otestování. Budete potřebovat nějakou databázi. V našem případě použijeme open source databáz PostgreSQL (https://www.postgresql.org/).
Obsahuje i administrátorskou část
Dále si vytvoříme jednoduchý příklad na základní otestování, kde zakomentujte řádky, které nechcete použít. Nastavíme správnou cestu k databázi, port, uživatele, heslo apod. a otestujeme.
package lab; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class PostgreSqlExample { public static void main(String args[]) { Connection con = null; try { Class.forName("org.postgresql.Driver"); con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/java1", "uzivatel", "veslo"); Statement st = con.createStatement(); String sql; sql = "CREATE TABLE IF NOT EXISTS person(id SERIAL PRIMARY KEY, first_name varchar(64), last_name varchar(64), email varchar(64))"; sql = "INSERT INTO person(first_name, last_name, email) values ('Martin','Noname','noname@vsb.cz')"; sql = "UPDATE person SET first_name = 'Martin', last_name = 'Prijmeni' WHERE id = 1"; sql = "DROP TABLE person "; st.executeUpdate(sql); sql = "SELECT id, first_name, last_name, email FROM person"; ResultSet rs = st.executeQuery(sql); while(rs.next()){ int id = rs.getInt("id"); String first = rs.getString("first_name"); String last = rs.getString("last_name"); String email = rs.getString("email"); System.out.print("ID: " + id); System.out.print(", First: " + first); System.out.println(", Last: " + last); System.out.println(", email: " + email); } rs.close(); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getClass().getName() + ": " + e.getMessage()); System.exit(0); } System.out.println("Opened database successfully"); } }
Přidáme do souboru pom.xml požadavek na další balíček s rozhraním pro postgreSQL, pro balíčkovač maven. Pokud chcete jinou databázi, zvolte vhodný repozitář.
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.2.18</version> </dependency>
nebo
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <version>10.15.2.0</version> </dependency>
Pokud vše funguje, pustíme se do ukázkové aplikace z přednášky (tableview-jdbc-master.zip).
Následně zabudujeme tabulku TableView do svého projektu i se zapisováním výsledku z aplikace do databáze. Zatím stačí jen lokální varianta, pokud bychom chtěli, je možné nahradit lokální databázi tou globální a vše bude fungovat globálně.
Ve vaší aplikaci již samozřejmě použijte TableView přímo pomocí FXML a vše propojte.
Vše si pečlivě odzkoušejte.
V případě použití MySQL
Class.forName("com.mysql.cj.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost/java1?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","user","veslo"); //maven <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>8.0.22</version> </dependency>