[[oktatas:programozás:java:java adatbázis:sqlite|< SQLite]] ====== SQLite ====== * **Szerző:** Sallai András * Copyright (c) 2013, Sallai András * Szerkesztve: 2013, 2014, 2015, 2022, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Az SQLite ===== Egy [[oktatas:szótár&#acid|ACID]]-kompatibilis relációs adatbázis-kezelő rendszer. Az SQLite motor a programba beépül, nem külön folyamat éri el az adatbázist. Egy SQLite adatbázis egyetlen fájlban tárolódik, amelynek szokásos kiterjesztése: * .sqlite * .db ===== Szükséges eszközök beszerzése ===== A meghajtó elérhetősége: * https://github.com/xerial/sqlite-jdbc (2020) * https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/ (2020) * https://github.com/xerial/sqlite-jdbc/releases (2021) ===== Maven elemek ===== org.xerial sqlite-jdbc 3.34.0 ===== Példakód ===== Ebben a példában Makefile-t használunk a fordításra. Ehhez szükség van egy make nevű parancsra, a fordításhoz és a futtatáshoz. Ha Visual Studio Code-t használunk, nincs szükség a Makefile használatára. SOURCES=Program01.java \ Sqlite.java all:$(SOURCES) javac -encoding utf8 $(SOURCES) run: java -cp .:sqlite-jdbc-3.7.2.jar Program01 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; class Sqlite { public Connection open() { Connection conn = null; try { conn = tryOpen(); }catch(SQLException ex) { System.err.println("Hiba a megnyitás során!"); }catch(ClassNotFoundException ex) { System.err.println("Hiba a meghajtó betöltése során!"); } return conn; } public Connection tryOpen() throws SQLException, ClassNotFoundException { Class.forName("org.sqlite.JDBC"); return DriverManager.getConnection("jdbc:sqlite:zoldzrt.sqlite"); } public void update(Connection conn, String sql) { try { tryUpdate(conn, sql); }catch(SQLException ex) { System.err.println("Hiba az sql végrehajtása során!"); } } public void tryUpdate(Connection conn, String sql) throws SQLException { Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); } public ResultSet query(Connection conn, String sql) { ResultSet rs = null; try { rs = tryQuery(conn, sql); }catch(SQLException ex) { System.err.println("Hiba a lekérdezés során!"); } return rs; } public ResultSet tryQuery(Connection conn, String sql) throws SQLException { ResultSet rs = null; Statement stmt = conn.createStatement(); stmt.setQueryTimeout(30); rs = stmt.executeQuery(sql); return rs; } public void close(Connection conn) { try { tryClose(conn); }catch(SQLException ex) { System.err.println("Hiba a bezárás során!"); } } public void tryClose(Connection conn) throws SQLException { conn.close(); } } Vegyük a kódból a kapcsolat stringet: DriverManager.getConnection("jdbc:sqlite:zoldzrt.sqlite"); A string vége, az **zoldzrt.sqlite** a fájl neve. import java.sql.ResultSet; import java.sql.Connection; import java.sql.SQLException; class Program01 { public static void main(String[] args) { Sqlite sqlite = new Sqlite(); Connection conn = sqlite.open(); sqlite.update(conn, "insert into dol2 (nev) values('Peres Iván')"); String sql = "select nev from dol2"; ResultSet rs = sqlite.query(conn, sql); try { while(rs.next()) { System.out.println(rs.getString("nev")); } }catch(SQLException ex) { System.err.println("Hiba az eredményhalmaz feldolgozása során!"); } sqlite.close(conn); } } ===== Fordítás ===== Fordítás: javac Program01.java Futtatás windows alatt: java -classpath ".;sqlite-jdbc-(VERSION).jar" Program01 Futtatás macOS és Linux alatt: java -classpath ".:sqlite-jdbc-(VERSION).jar" Program01 ===== Linkek ===== * https://www.sqlitetutorial.net/sqlite-java/ (2020) * SQLite programok * http://sqlitebrowser.org/ * http://sqlitestudio.pl/ * http://sqlite.org/ * SQL nyelv: * http://sqlite.org/lang.html