[Java Advanced] Подробное объяснение JDBC ReadedStatement
[Java Advanced] Подробное объяснение JDBC ReadedStatement

В Java взаимодействие с реляционными базами данных — одна из наиболее распространенных задач. JDBC (Ява Database Connectivity) даJava-платформа со стандартным API для подключения и работы с базами различных реляционных типов. данных。в,PreparedStatement да JDBC Важный интерфейс в , используемый для выполнения предварительно скомпилированных SQL заявление. В этом блоге будет подробно представлено JDBC из PreparedStatement,Включая его основные концепции, методы использования и лучшие практики.

Что такое подготовленный оператор?

PreparedStatement да JDBC серединаиз Интерфейс для выполнения прекомпилирования SQL заявление.с обычнымиз Statement другой,PreparedStatement из SQL Операторы компилируются перед выполнением, что делает их более эффективными и безопасными, предотвращая при этом SQL инъекционная атака。PreparedStatement Обычно используется для выполнения нескольких аналогичных операций. SQL Запрос или обновление необходимо скомпилировать только один раз и выполнить несколько раз.

Создать подготовленный оператор

Чтобы создать PreparedStatement Объект, сначала вам нужно получить Connection объект, затем используйте prepareStatement Метод передан SQL заявление. Вот пример:

Язык кода:javascript
копировать
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class PreparedStatementDemo {
    public static void main(String[] args) {
        // Получить базу данныхсоединять        Connection connection = getConnection();

        try {
            // SQL Оператор запроса, используйте ? как заполнитель
            String sql = "SELECT * FROM users WHERE username = ?";

            // Создать подготовленный оператор объект
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    // Получить базу Метод данныхConnectionizExample
    private static Connection getConnection() {
        // выполнить Получить базу соединение данных из логики, конкретный код здесь опущен
        return null;
    }
}

В приведенном выше примере мы создали PreparedStatement объект, среди которого SQL используется в операторе запроса ? В качестве заполнителя вы можете использовать его позже. setXXX Метод устанавливает конкретные значения для этих заполнителей.

Установить параметры

PreparedStatement позвольте нам SQL из заполнителя Установить в операторе значение параметра. Есть много setXXX Доступны методы для разных типов данных и настроек параметров, например. setIntsetStringsetDouble ждать. Следующие действия: Установить параметризованный:

Язык кода:javascript
копировать
try {
    String sql = "INSERT INTO users (username, age) VALUES (?, ?)";
    PreparedStatement preparedStatement = connection.prepareStatement(sql);

    // Установите первый параметр в строковый тип
    preparedStatement.setString(1, "Alice");

    // Установите второй параметр целочисленного типа
    preparedStatement.setInt(2, 30);

    // осуществлять SQL заявление
    preparedStatement.executeUpdate();
} catch (SQLException e) {
    e.printStackTrace();
}

В приведенном выше примере мы используем setString и setInt Методы SQL заявлениесерединаиз Два заполнителя установлены для конкретныхиз Значение параметра。

Выполнить запрос

хотеть Выполнить операцию запроса, вы можете использовать executeQuery метод, который возвращает ResultSet объект, используемый для хранения результатов запроса. Пример ниже:

Язык кода:javascript
копировать
try {
    String sql = "SELECT * FROM users WHERE age > ?";
    PreparedStatement preparedStatement = connection.prepareStatement(sql);

    // Установить параметры
    preparedStatement.setInt(1, 25);

    // Выполнить запрос
    ResultSet resultSet = preparedStatement.executeQuery();

    // Обработка результатов запроса
    while (resultSet.next()) {
        String username = resultSet.getString("username");
        int age = resultSet.getInt("age");
        System.out.println("Username: " + username + ", Age: " + age);
    }
} catch (SQLException e) {
    e.printStackTrace();
}

В приведенном выше примере,Мы изучили операцию запроса с заполнителем из,и пройти setInt Метод устанавливает заполнитель из значения параметра, а затем использует executeQuery метод Выполнить запрос, последний обход ResultSet Получите результаты запроса.

выполнить обновление

хотетьвыполнить операции обновления (такие как вставка, обновление, удаление), вы можете использовать executeUpdate метод. Пример ниже:

Язык кода:javascript
копировать
try {
    String sql = "UPDATE users SET age = ? WHERE username = ?";
    PreparedStatement preparedStatement = connection.prepareStatement(sql);

    // Установить параметры
    preparedStatement.setInt(1, 28);
    preparedStatement.setString(2, "Alice");

    // выполнить обновление
    int rowCount = preparedStatement.executeUpdate();

    // Выведите количество обновленных строк
    System.out.println("Updated " + rowCount + " rows.");
} catch (SQLException e) {
    e.printStackTrace();
}

В приведенном выше примере,насосуществлятьс заполнителемизвозобновлятьдействовать,проходить setInt и setString Метод устанавливает заполнитель из значения параметра, а затем использует executeUpdate методвыполнить обновлениедействовать,И вы делаете количество обновленных строк。

Выполнить пакетную обработку

PreparedStatement Также поддерживается пакетная обработка, то есть выполнение нескольких SQL заявление. Это похоже на необходимость часто выполнять SQL заявлениеиз Очень полезная ситуация,Может улучшить производительность. Ниже приведен пример пакетной обработки:

Язык кода:javascript
копировать
try {
    String insertSql = "INSERT INTO users (username, age) VALUES (?, ?)";
    String updateSql = "UPDATE users SET age = ? WHERE username = ?";

    // Создать подготовленный оператор объект
    PreparedStatement insertStatement = connection.prepareStatement(insertSql);
    PreparedStatement updateStatement = connection.prepareStatement(updateSql);

    // Установить параметры и добавить в пакет
    for (int i = 1; i <= 3; i++) {
        insertStatement.setString(1, "User" + i);
        insertStatement.setInt(2, 25 + i);
        insertStatement.addBatch();

        updateStatement.setInt(1, 30 + i);
        updateStatement.setString(2, "User" + i);
        updateStatement.addBatch();
    }

    // Выполнить пакетную обработку
    int[] insertResult = insertStatement.executeBatch();
    int[] updateResult = updateStatement.executeBatch();

    // Вывод результатов пакетной обработки
    System.out.println("Inserted rows: " + Arrays.toString(insertResult));
    System.out.println("Updated rows: " + Arrays.toString(updateResult));
} catch (SQLException e) {
    e.printStackTrace();
}

В приведенном выше примере мы создали два PreparedStatement объект и использование addBatch метод преобразует несколько SQL оператор для пакета, а затем используйте executeBatch Метод Одноразовый Выполнить пакетную обработкусерединаизвсе SQL заявление.

Закрыть подготовленный оператор

После использования PreparedStatement Наконец, его следует закрыть вовремя, чтобы высвободить ресурсы. Можно использовать close метод закрытия PreparedStatement。нижедаодинзакрытие PreparedStatement из Пример:

Язык кода:javascript
копировать
try {
    // Создать подготовленный оператор объект
    PreparedStatement preparedStatement = connection.prepareStatement(sql);

    // Установить параметры...
    
    // осуществлятьдействовать...
    
    // Закрыть подготовленный оператор
    preparedStatement.close();
} catch (SQLException e) {
    e.printStackTrace();
}

Подвести итог

PreparedStatement да JDBC используется для выполнения предварительной компиляции в SQL заявлениеиз Тяжелыйхотетьинтерфейс,Он имеет преимущества эффективности, безопасности и ремонтопригодности. в практическом применении,использовать PreparedStatement может эффективно предотвратить SQL Внедрить атаку и улучшить базу данные операции из производительности. Изучив эту статью, вы должны быть знакомы с PreparedStatement из Основные понятия и методы использования имеют более четкое понимание. Написание базы данных Связанныйиз Java приложение, рассмотрите возможность использования PreparedStatement выполнить SQL действовать.

Информация об авторе Автор: Фаньи CSDN: https://techfaNY.blog.csdn.net Самородки: https://juejin.cn/user/4154386571867191

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose