Atualizando dados no MySQL usando JDBC PreparedStatement – 03

Neste tutorial, você aprenderá como atualizar dados no banco de dados MySQL usando a interface JDBC PreparedStatement.

A PreparedStatementinterface estende a Statementinterface que fornece alguns recursos mais avançados, como segue:

  • Adicione parâmetros à sua instrução SQL usando espaços reservados na forma de pontos de interrogação (?). Isso ajuda a evitar a injeção de SQL.
  • Reutilize o PreparedStatementcom novos parâmetros caso precise executar a instrução SQL várias vezes com parâmetros diferentes.
  • Ajude a aumentar o desempenho da instrução executada pré-compilando a instrução SQL.

Usaremos o PreparedStatementpara atualizar os sobrenomes dos candidatos na candidatestabela.

Primeiro, você abre uma conexão com o banco de dados MySQL reutilizando a classe de utilitário chamada MySQLJDBCUtilque desenvolvemos no tutorial anterior .

Connection conn = MySQLJDBCUtil.getConnection();Linguagem de código:  Java  ( java )

Segundo, você constrói uma instrução SQL UPDATE e cria PreparedStatemento objeto chamando o prepareStatement()método do Connectionobjeto. O prepareStatement()método aceita vários parâmetros. Neste exemplo, você passa uma string que é uma instrução SQL.

String sqlUpdate = "UPDATE candidates "
                + "SET last_name = ? "
                + "WHERE id = ?";

PreparedStatement pstmt = conn.prepareStatement(sqlUpdate);Linguagem de código:  Java  ( java )

Observe que existem dois pontos de interrogação (?) como espaços reservados para os campos last_namee id.

Terceiro, você fornece valores para os espaços reservados um por um usando o método setYYY() da interface PreparedStatement, onde YYY é o tipo de dados do espaço reservado.

Por exemplo, se você deseja atualizar o sobrenome do candidato com o id 100para William, você pode definir os valores para os espaços reservados da seguinte forma:

String lastName = "William";
int id = 100;

pstmt.setString(1, lastName);
pstmt.setInt(2, id);Linguagem de código:  Java  ( java )

Quarto, você envia a UPDATEinstrução com os valores dos espaços reservados para o MySQL chamando o executeUpdate()método da PreparedStatementinterface. Este método não aceita argumentos e retorna o número de linhas afetadas.

int rowAffected = pstmt.executeUpdate();Linguagem de código:  Java  ( java )

Caso queira reutilizar o PreparedStatement, você precisa preencher novos valores para os placeholders e chamar o método executeUpdate()novamente. Por exemplo, se quiser atualizar o sobrenome de um candidato com o id 101para Grohe, você pode fazer da seguinte forma:

 // reuse the prepared statement
lastName = "Grohe";
id = 101;

pstmt.setString(1, lastName);
pstmt.setInt(2, id);

rowAffected = pstmt.executeUpdate();Linguagem de código:  Java  ( java )

Como sempre, você deve fechar PreparedStatementchamando seu close()método.

pstmt.close()Linguagem de código:  Java  ( java )

Caso você use a instrução try-with-resources, não será necessário fazer isso explicitamente. A seguir ilustra o exemplo completo de uso PreparedStatementpara atualizar dados.

package org.mysqltutorial;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 *
 * @author tutorials.acervolima.com
 */
public class Main {

    /**
     * Update candidate demo
     */
    public void update() {

        String sqlUpdate = "UPDATE candidates "
                + "SET last_name = ? "
                + "WHERE id = ?";

        try (Connection conn = MySQLJDBCUtil.getConnection();
                PreparedStatement pstmt = conn.prepareStatement(sqlUpdate)) {

            // prepare data for update
            String lastName = "William";
            int id = 100;
            pstmt.setString(1, lastName);
            pstmt.setInt(2, id);

            int rowAffected = pstmt.executeUpdate();
            System.out.println(String.format("Row affected %d", rowAffected));

            // reuse the prepared statement
            lastName = "Grohe";
            id = 101;
            pstmt.setString(1, lastName);
            pstmt.setInt(2, id);

            rowAffected = pstmt.executeUpdate();
            System.out.println(String.format("Row affected %d", rowAffected));

        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }

    /**
     * main method
     *
     * @param args
     */
    public static void main(String[] args) {
        update();

    }
}Linguagem de código:  Java  ( java )

Antes de executar o programa, vamos examinar os candidatos atuais com id 100 e 101 no banco de dados mysqljdbc :

SELECT * FROM candidates
WHERE id = 100 OR id = 101;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O resultado da consulta é o seguinte:
exemplo de declaração preparada mysql jdbc

Ao executar o programa Java acima, você verá a seguinte saída:

programa de declaração preparada de saída

Se você executar a instrução SELECT novamente, verá que as alterações foram aplicadas à candidatestabela.

instrução preparada mysql jdbc depois

É importante observar que você pode usar qualquer instrução como SELECT , INSERT , DELETE , etc.PreparedStatement

Neste tutorial, mostramos como atualizar dados no MySQL usando a interface JDBC PrepareStatement.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *