Tartalomjegyzék

< SQLite

SQLite

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:

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:

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:

Szoftverek: