[[oktatas:programozas:java:java adatbázis:mariadb|< Mariadb]] ====== MariaDB haladó ====== * **Szerző:** Sallai András * Copyright (c) 2020, Sallai András * Szerkesztve: 2020, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Több SQL utasítás egyszerre ===== Ha több SQL utasításunk van, amit futtatni kell, az addBatch() metódussal felvehetjük őket, majd az executeBatch() metódussal egyszerre futtatjuk őket, egymás után. Statement stmt = c.createStatement(); String sql1 = "create database vmi1"; String sql2 = "create database vmi2"; String sql3 = "create database vmi3"; stmt.addBatch(sql1); stmt.addBatch(sql2); stmt.addBatch(sql3); stmt.executeBatch(); ===== Meta adatok ===== if (conn != null) { DatabaseMetaData meta = conn.getMetaData(); System.out.println("Driver név: " + meta.getDriverName()); } Használható metódusok: * getCatalogSeparator() * getCatalogTerm() * getDatabaseProductName() * getDatabaseProductVersion() * getDriverName() * getDriverVersion() * getExtraNameCharacters() * getIdentifierQuoteString() * getNumericFunctions() * getProcedureTerm() * getSQLKeywords() * getSchemaTerm() * getSearchStringEscape() * getStringFunctions() * getSystemFunctions() * getTimeDateFunctions() * getURL() * getUserName() ===== Beszúrt rekord kulcsa ===== String sql = "insert into tabla1 (name) values(?)"; PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, "János") pstmt.execute(); ResultSet rs = pstmt.getGeneratedKeys(); int genKey = 0; if (rs.next()) { genKey = rs.getInt(1); } System.out.println("az: " + genKey); ===== SQL problémák naplózása ===== import java.util.logging.Level; import java.util.logging.Logger; //... try { //... }catch(SQLException ex) { Logger.getLogger(Mariadb.class.getName()).log(Level.SEVERE, null, ex); } A "Mariadb" az az osztály, amelyben a kapcsolatot létrehozzuk. ===== Driver jelenléte ===== A MariaDB driver ellenőrzése: Class.forName("org.mariadb.jdbc.Driver"); import java.sql.SQLException; import java.sql.Statement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.DriverManager; import java.util.ArrayList; class App { public static ArrayList getEmployees() { ArrayList employeeList = new ArrayList<>(); Connection conn = null; try { Class.forName("org.mariadb.jdbc.Driver"); String url = "jdbc:mariadb://localhost:3306/surubt"; conn = DriverManager.getConnection(url, "surubt", "titok"); String sql = "select * from employees"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { Employee emp = new Employee( rs.getInt("id"), rs.getString("name"), rs.getString("city"), rs.getDouble("salary"), rs.getDate("birth").toLocalDate() ); employeeList.add(emp); } }catch(SQLException ex) { System.err.println("Hiba! Az SQL művelet sikertelen!"); System.err.println(ex.getMessage()); }catch(ClassNotFoundException ex) { System.err.println("Hiba! A MariaDB driver nem található!"); System.err.println(ex.getMessage()); } return employeeList; } public static void main(String[] args) { ArrayList employeeList; employeeList = getEmployees(); employeeList.forEach(emp -> { System.out.println(emp.name); }); } }