ResultSetcode i samme folder som din sketch.code mappe.Database.java og gem denne i samme folder som din sketch.library, 1 table. 20 records.library test databasenTest kode
import java.sql.Connection; import controlP5.*; Database db; Connection conn; void setup() { db = Database.getInstance(); conn = db.getConnection(); // ..andet kode fx. control P5 m.m. }
Du kan nu efterfølgende tilgå databasen gennem conn.
Her indsættes en record i `Books`-tabellen:
try { String sql = "INSERT INTO Books (title, author) VALUES(?, ?)"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, title); stmt.setString(2, author); int rows = stmt.executeUpdate(); stmt.close(); println("Inserted artist: " + title+ " (" + author+ ") - " + rows + " row(s) affected"); } catch(SQLException e) { e.printStackTrace(); }
Forklaring på try/catch:
Vi bruger try/catch for at håndtere fejl, som kan opstå når vi arbejder med databaser, fx hvis:
Hvis en fejl opstår, stopper programmet ikke brat – i stedet kan fange fejlen (Catch) og vise hvad som skete (`e.printStackTrace()`).
Her hentes bøger fra 'Books' table.
try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT title, author FROM Books"); while(rs.next()) { String title = rs.getString("title"); String author = rs.getString("author"); println(title + ": " + author); } rs.close(); stmt.close(); } catch (SQLException e) { e.printStackTrace(); }
try/catch: Samme princip gælder her: databasen kan fejle, fx hvis forespørgslen er forkert eller forbindelsen mistes. try/catch sørger for, at programmet kan håndtere fejlen pænt og ikke crasher.
import java.sql.*; public class Database { // Singleton-instans private static Database instance; // JDBC-forbindelsen private Connection connection; // === RET DISSE === private static final String HOST = "localhost"; private static final String DATABASE = "skole_db"; private static final String USER = "root"; private static final String PASSWORD = ""; private static final String URL = "jdbc:mariadb://" + HOST + ":3306/" + DATABASE + "?useSSL=false"; // Privat constructor (singleton) private Database() { try { connection = DriverManager.getConnection(URL, USER, PASSWORD); System.out.println("Database connected"); } catch (SQLException e) { System.out.println("Database connection failed"); e.printStackTrace(); } } // Få singleton-instansen public static Database getInstance() { if (instance == null) { instance = new Database(); } return instance; } // Giv adgang til forbindelsen public Connection getConnection() { return connection; } public void close() { try { if (connection != null && !connection.isClosed()) { connection.close(); System.out.println("Database closed"); } } catch (SQLException e) { e.printStackTrace(); } } }