Você está na página 1de 16


• Todo comando SQL utilizado para manipular a base de dados deve ser executado
sempre que possível através do PreparedStatement;

• Ideal para comandos configuráveis e utilizados repetidas vezes;

• Proporciona melhor performance e clareza do código-fonte;

• Protege a aplicação contra ataques do tipo SQL Injection;


• O objeto PreparedStatement é obtido com o método prepareStatement() de um
objeto do tipo java.sql.Connection;

• A SQL do PreparedStatement pode ser parametrizada com sinais “?”;

• Os métodos setXXX() são utilizados para atribuir valores a esses parâmetros;


//Criar o preparedStatement
PreparedStatement stmt = conn.prepareStatement("INSERT INTO TB_CLIENTE(ID_CLIENTE,
NOME, CPF, DDD, TELEFONE, ATIVO, VALOR_COMPRA) VALUES (SQ_CLIENTE.NEXTVAL, ?, ?, ?, ?,
?, ?) ");

stmt.setString(1, "Thiago"); //Nome


stmt.setString(2, "1231231234563"); //Cpf
stmt.setInt(3, 11); //DDD
stmt.setString(4, "988343399"); //Telefone
stmt.setBoolean(5, true); //Ativo
stmt.setDouble(6, 10.5); //Valor compra

//Executa a query
stmt.executeUpdate();
TRANSAÇÕES
• É uma unidade que preserva a consistência no banco de dados;

• Transações são unidades atômicas de operações;

• “Em ciência da computação, uma transação atômica é uma operação, ou conjunto de


operações, em uma base de dados, ou em qualquer outro sistema computacional,
que deve ser executada completamente em caso de sucesso, ou ser abortada
completamente em caso de erro.”;
• O exemplo clássico para a necessidade de uma "transação atômica" é aquele da
transferência entre duas contas bancárias;

• No momento de uma transferência de valores de uma conta "A" para uma conta "B",
que envolve pelo menos uma operação de ajuste no saldo para cada conta, se o
computador responsável pela operação é desligado por falta de energia, é esperado
que o saldo de ambas as contas não tenha se alterado. Neste caso são utilizados
sistemas que suportam transações atômicas;
• Transação pode ser representada pela sigla ACID:

• Atomicity (Atomicidade) - atômico, tudo (commit) ou nada (rollback);


• Consistency (Consistência) - Toda transação executada deve seguir as regras de
integridade do banco de dados, mantendo o banco de dados consistente;
• Isolation (Isolamento) - Transações executadas de forma isolada ( Ex: transação A altera
o saldo da conta B, Transação B altera o saldo da conta B);
• Durability (Durabilidade) - As alterações efetuadas pelas transações são permanentes,
mesmo em caso de falhas posteriores;
• Operações: COMMIT(confirmar) ou ROLLBACK(reverter);

• COMMIT - Todas operações envolvidas em uma unidade de processo executam com sucesso;

• ROLLBACK - Uma ou mais operações envolvidas em uma unidade de processo não executam
corretamente;

• Por padrão, toda conexão com JDBC está com AutoCommit ativado, ou seja, qualquer comando
SQL enviado é um comando executado no banco de dados automaticamente;

• Para desabilitar, após obter uma instância de Connection, utilize o método: setAutoCommit
passando o valor false;
try {
conn.setAutoCommit(false);

PreparedStatement stmt =
conn.prepareStatement("UPDATE TB_LIVRO SET PAIS = ? WHERE PAIS IS NULL");

stmt.setString(1, "Brasil");
stmt.executeUpdate();

PreparedStatement stmt2 =
conn.prepareStatement("UPDATE TB_LIVRO SET DESCONTO = ? WHERE PAIS = ?");

stmt2.setInt(1, 10);
stmt2.setString(2, "Brasil");
stmt2.executeUpdate();

conn.commit();

} catch (Exception e) {
conn.rollback();
}
Crie um programa em Java para realizar transferência de valor entre uma conta e outra. A
transferência será realizada da seguinte forma:

- O usuário deverá informar o número da conta de origem (conta em que o saque será
realizado).
- O usuário deverá informar o valor a ser transferido
- Caso o valor informado esteja disponível na conta de origem, o usuário informará o
número da conta de destino e então a transferência será efetuada.
- Se o valor informado não estiver disponível na conta, o sistema não realizará a
transferência e mostrará a seguinte mensagem:
Seu saldo atual eh de R$, nao serah possivel realizar a transferencia!

OBS: Script para criação da tabela no próximo slide.


CREATE TABLE TB_CONTA(
ID_CONTA NUMBER NOT NULL PRIMARY KEY,
NUMERO_CONTA VARCHAR2(5) NOT NULL,
NOME_TITULAR VARCHAR2(100) NOT NULL,
CPF VARCHAR2(11) NOT NULL,
ATIVO NUMBER(1) DEFAULT 0 NOT NULL,
SALDO NUMBER(10,2) DEFAULT 0 NOT NULL
) SEGMENT CREATION IMMEDIATE;

CREATE SEQUENCE SQ_CONTA START WITH 1 INCREMENT BY 1


NOCYCLE ORDER;
“Muda tuas ideias e mudarás teu mundo”. (Norman Vincent Peale)

Você também pode gostar