SQLite - Java: руковод BEGINNERS
Привет, будущая суперзвезда кодирования! ? Добро пожаловать в чудесный мир SQLite и Java. Я рад быть вашим проводником в этом захватывающем путеше ствии. Как кто-то, кто преподавал информатику на протяже нии многих лет, я могу заверить вас, что к концу этого учебника вы будете поражены тем, что сможете сделать. Так что давайте погрузимся в это!
Установка
Прежде чем мы начнем творить магию с базами данных, нам нужно настроить наши инструменты. Представьте это как подготовку кухни перед приготовлением вкусного блюда. ?
- Скачайте JDBC-драйвер для SQLite отсюда здесь.
- Добавьте скачанный 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