Java – Lesson 8

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&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC","user","veslo");

//maven
<dependency>
			<groupid>mysql</groupid>
			<artifactid>mysql-connector-java</artifactid>
			<version>8.0.22</version>
		</dependency>