SQLite - Java: руковод BEGINNERS

Привет, будущая суперзвезда кодирования! ? Добро пожаловать в чудесный мир SQLite и Java. Я рад быть вашим проводником в этом захватывающем путеше ствии. Как кто-то, кто преподавал информатику на протяже нии многих лет, я могу заверить вас, что к концу этого учебника вы будете поражены тем, что сможете сделать. Так что давайте погрузимся в это!

SQLite - Java

Установка

Прежде чем мы начнем творить магию с базами данных, нам нужно настроить наши инструменты. Представьте это как подготовку кухни перед приготовлением вкусного блюда. ?

  1. Скачайте JDBC-драйвер для SQLite отсюда здесь.
  2. Добавьте скачанный JAR-файл в классpath вашего Java-проекта.

Вот небольшой фрагмент кода, чтобы проверить, все ли настроено правильно:

import java.sql.*;

public class SQLiteTest {
public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
System.out.println("SQLite JDBC driver loaded successfully!");
} catch (ClassNotFoundException e) {
System.out.println("Error: SQLite JDBC driver not found.");
e.printStackTrace();
}
}
}

Если вы видите "SQLite JDBC driver loaded successfully!" при выполнении этого кода, вы все настроили правильно!

Подключение к базе данных

Теперь, когда у нас есть все ингредиенты готово, давайте начнем готовить! ?️ Подключение к базе данных похоже на开门冰箱 - это первый шаг к созданию чего-то удивительного.

import java.sql.*;

public class SQLiteConnect {
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:sqlite:test.db";
conn = DriverManager.getConnection(url);
System.out.println("Connection to SQLite has been established.");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}

Этот код создает подключение к SQLite базе данных с именем "test.db". Если файл не существует, SQLite создаст его для вас. Не здорово ли это?

Создание таблицы

Теперь, когда мы подключены, давайте создадим таблицу. Represent a table as a spreadsheet within your database. We'll create a simple "students" table.

import java.sql.*;

public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";

String sql = "CREATE TABLE IF NOT EXISTS students (" +
"id INTEGER PRIMARY KEY," +
"name TEXT NOT NULL," +
"grade INTEGER" +
");";

try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
stmt.execute(sql);
System.out.println("Table created successfully!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

Этот код создает таблицу с именем "students" и тремя столбцами: id, name и grade. Часть "IF NOT EXISTS" похожа на вежливый стук в дверь - она проверяет, существует ли таблица, перед тем как пытаться создать ее.

Операция INSERT

Теперь давайте добавим данные в нашу таблицу. Это как заполнение того spreadsheets, который мы создали earlier.

import java.sql.*;

public class InsertData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "INSERT INTO students(name,grade) VALUES(?,?)";

try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {

pstmt.setString(1, "Alice");
pstmt.setInt(2, 85);
pstmt.executeUpdate();

pstmt.setString(1, "Bob");
pstmt.setInt(2, 90);
pstmt.executeUpdate();

System.out.println("Data inserted successfully!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

Этот код вставляет два студента в нашу таблицу. Символы "?" в SQL-запросе являются местозаполнителями, которые мы заполняем с помощью setString() и setInt(). Это как заполнение пропусков в предложении!

Операция SELECT

Теперь, когда мы добавили данные, давайте получим их. Это как чтение из того spreadsheet, который мы создали.

import java.sql.*;

public class SelectData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "SELECT id, name, grade FROM students";

try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {

while (rs.next()) {
System.out.println(rs.getInt("id") + "\t" +
rs.getString("name") + "\t" +
rs.getInt("grade"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

Этот код получает все данные из нашей таблицы "students" и выводит их. Цикл while похож на прохождение каждого ряда нашего spreadsheet по одному.

Операция UPDATE

Иногда нам нужно изменить данные, уже находящиеся в нашей таблице. Давайте обновим оценку Alice.

import java.sql.*;

public class UpdateData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "UPDATE students SET grade = ? WHERE name = ?";

try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {

pstmt.setInt(1, 95);
pstmt.setString(2, "Alice");
pstmt.executeUpdate();
System.out.println("Data updated successfully!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

Этот код обновляет оценку Alice до 95. Это как стирание ячейки в нашем spreadsheet и написание нового значения.

Операция DELETE

Наконец, давайте научимся удалять данные из нашей таблицы. Возможно, Bob решил перевестись в другую школу.

import java.sql.*;

public class DeleteData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "DELETE FROM students WHERE name = ?";

try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {

pstmt.setString(1, "Bob");
pstmt.executeUpdate();
System.out.println("Data deleted successfully!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}

Этот код удаляет Bob из нашей таблицы "students". Это как стирание всей строки из нашего spreadsheet.

И вот и все! Вы только что学习了 основы работы с SQLite в Java. Помните, что практика делает мастера, так что не бойтесь экспериментировать с этими примерами. Before you know it, you'll be creating complex database applications!

Here's a quick reference table of the main methods we've used:

Method Description
DriverManager.getConnection(url) Establishes a connection to the database
Connection.createStatement() Creates a Statement object for executing SQL
Connection.prepareStatement(sql) Creates a PreparedStatement for executing parameterized SQL
Statement.execute(sql) Executes a SQL statement that doesn't return a result set
Statement.executeQuery(sql) Executes a SQL query and returns a ResultSet
PreparedStatement.setString(index, value) Sets a String parameter in a PreparedStatement
PreparedStatement.setInt(index, value) Sets an int parameter in a PreparedStatement
PreparedStatement.executeUpdate() Executes an INSERT, UPDATE, or DELETE statement
ResultSet.next() Moves to the next row in a ResultSet
ResultSet.getInt(columnName) Gets an int value from the current row
ResultSet.getString(columnName) Gets a String value from the current row

Keep coding, keep learning, and most importantly, have fun! ??

Credits: Image by storyset