В Java взаимодействие с реляционными базами данных — одна из наиболее распространенных задач. JDBC (Ява Database Connectivity) даJava-платформа со стандартным API для подключения и работы с базами различных реляционных типов. данных。в,PreparedStatement
да JDBC Важный интерфейс в , используемый для выполнения предварительно скомпилированных SQL заявление. В этом блоге будет подробно представлено JDBC из PreparedStatement
,Включая его основные концепции, методы использования и лучшие практики.
PreparedStatement
да JDBC серединаиз Интерфейс для выполнения прекомпилирования SQL заявление.с обычнымиз Statement
другой,PreparedStatement
из SQL Операторы компилируются перед выполнением, что делает их более эффективными и безопасными, предотвращая при этом SQL инъекционная атака。PreparedStatement
Обычно используется для выполнения нескольких аналогичных операций. SQL Запрос или обновление необходимо скомпилировать только один раз и выполнить несколько раз.
Чтобы создать PreparedStatement
Объект, сначала вам нужно получить Connection
объект, затем используйте prepareStatement
Метод передан SQL заявление. Вот пример:
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
Доступны методы для разных типов данных и настроек параметров, например. setInt
、setString
、setDouble
ждать. Следующие действия: Установить параметризованный:
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
объект, используемый для хранения результатов запроса. Пример ниже:
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
метод. Пример ниже:
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 заявлениеиз Очень полезная ситуация,Может улучшить производительность. Ниже приведен пример пакетной обработки:
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
из Пример:
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 |
---|