Tartalomjegyzék
SQLite
- Szerző: Sallai András
- Copyright © 2013, Sallai András
- Szerkesztve: 2013-2024
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Az SQLite
Az SQLite egy nyílt forráskódú, beágyazott SQL adatbázis-kezelő rendszer. A beágyazott azt jelenti, hogy nincs szükség külön kiszolgálóra, az alkalmazás közvetlenül éri el az adatbázist, ami a fájlrendszerben tárolódik.
Az SQLite az adatokat egy .db vagy egy .sqlite kiterjesztésű fájlban tárolja.
Használati esetek:
- mobilalkalmazás
- asztali alkalmazás
- webes alkalmazás
- tesztelés és prototípus fejlesztés
- beágyazott rendszereken (pl. IoT eszközök)
Adatbázis kezelése
Az sqlite3 parancs
Telepítés Windowson és Linuxon:
choco install sqlite.shell apt install sqlite3
Ellenőrzés:
sqlite3 --version
Leírás itt:
VSCode bővítmény
Telepítsük a következő bővítményt:
- SQLite3 Editor
Az SQLite3 Editor-t közzétette: yy0931.
Táblák létrehozása
create table employees ( id integer not null primary key autoincrement, name text, city text, salary real );
Illesztőprogram
Látogassuk meg a következő weboldalt:
Maven függőség beállítása:
<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.46.1.3</version> </dependency>
Kapcsolódás
- App.java
import java.sql.Connection; import java.sql.DriverManager; public class App { public static void main(String[] args) throws Exception { String url = "jdbc:sqlite:database.sqlite"; Connection conn = DriverManager.getConnection(url); System.out.println("OK"); conn.close(); } }
Ha a projekt futtatásakor az illesztőprogram rendelkezésre kell álljon. A database.sqlite fájl ha nem létezik, automatikusan létrejön, 0 mérettel.
Az SQLException
- Sqlite.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; class App { public static void main(String[] args) { try { String url = "jdbc:sqlite:database.sqlite"; Connection conn = DriverManager.getConnection(url); System.out.println("OK"); conn.close(); }catch(SQLException e) { System.err.println("Hiba! Az elérés sikertelen!"); System.err.println(e.getMessage()); } } }
Kapcsolódáshoz osztály
- Database.java
import java.sql.Connection; public interface Database { public Connection connect(); }
- Sqlite.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Sqlite implements Database { @Override public Connection connect() { try { return tryConnect(); }catch(SQLException e) { System.err.println("Hiba! Az elérés sikertelen!"); System.err.println(e.getMessage()); return null; } } public Connection tryConnect() { String url = "jdbc:sqlite:database.sqlite"; Connection conn = DriverManager.getConnection(url); return conn; } }
CRUD műveletek
Adatbázistábla
create table employees( id integer not null primary key autoincrement, name text, city text, salary real );
Modell
- Employee.java
public class Emplyoee { Integer id; String name; String city; Double salary; }
Read
- DataSource.java
import java.util.ArrayList; import java.sql.Connection; import java.Statement; import java.ResultSet; public class DataSource { Database database; public DataSource(Database database) { this.database = database; } public ArrayList<Employee> getEmployees() { try { tryGetEmployee(); }catch(SQLException e) { System.err.println("Hiba! Az elérés sikertelen!"); System.err.println(e.getMessage()); return null; } } public ArrayList<Employee> tryGetEmployee() { ArrayList<Employee> empList = new ArrayList<>(); Connection conn = database.connect(); String sql = "select * from emplyoees"; Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); while(rs.next()) { Employee emp = new Employee(); emp.id = rs.getInt("id"); emp.name = rs.getString("name"); emp.city = rs.getString("city"); emp.salary = rs.getDouble("salary"); empList.add(emp); } return empList; } }
PreparedStatement használata
Create művelet
- EmployeeSource.java
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; public class EmployeeSource { Database datbase; public EmployeeSource(Database database) { this.datbase = database; } public ArrayList<Employee> getEmployees() { try { return tryGetEmployees(); } catch (SQLException e) { System.err.println("Hiba! A lekérdezés sikertelen!"); System.err.println(e.getMessage()); return null; } } public ArrayList<Employee> tryGetEmployees() throws SQLException { Connection conn = datbase.connect(); String sql = "select * from employees"; ArrayList<Employee> employees = new ArrayList<Employee>(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { Employee employee = new Employee(); employee.id = rs.getInt("id"); employee.name = rs.getString("name"); employee.city = rs.getString("city"); employee.salary = rs.getDouble("salary"); employees.add(employee); } return employees; } public Employee addEmployee(Employee employee) { try { return tryAddEmployee(employee); } catch (SQLException e) { System.err.println("Hiba! A hozzáadás sikertelen!"); System.err.println(e.getMessage()); return null; } } public Employee tryAddEmployee(Employee employee) throws SQLException { Connection conn = datbase.connect(); String sql = """ insert into employees (name, city, salary) values (?, ?, ?) """; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, employee.name); pstmt.setString(2, employee.city); pstmt.setDouble(3, employee.salary); pstmt.executeUpdate(); return employee; } }
Frissítés
Adjuk az EmployeeSource osztályhoz:
public Employee updateEmployee(Employee employee) { try { return tryUpdateEmployee(employee); } catch (SQLException e) { System.err.println("Hiba! A frissítés sikertelen!"); System.err.println(e.getMessage()); return null; } } public Employee tryUpdateEmployee(Employee employee) throws SQLException { Connection conn = datbase.connect(); String sql = """ update employees set name = ?, city = ?, salary = ? where id = ? """; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, employee.name); pstmt.setString(2, employee.city); pstmt.setDouble(3, employee.salary); pstmt.setInt(4, employee.id); pstmt.executeUpdate(); return employee; }
Törlés
Adjuk az EmployeeSource osztályhoz:
public void deleteEmployee(int id) { try { tryDeleteEmployee(id); } catch (SQLException e) { System.err.println("Hiba! A törleés sikertelen!"); System.err.println(e.getMessage()); } } public void tryDeleteEmployee(int id) throws SQLException { Connection conn = datbase.connect(); String sql = "delete from employees where id = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, id); pstmt.executeUpdate(); }
Linkek
Irodalom:
- https://sqlite.org/ (2024)
Szoftverek:
- https://sqlitestudio.pl/ (2024)
- https://sqlitebrowser.org/ (2024)