rafaelsaidbc / XTI

Apps desenvolvidos durante o curso da XTI University
0 stars 0 forks source link

Acesso a banco de dados - java #4

Open rafaelsaidbc opened 7 years ago

rafaelsaidbc commented 7 years ago

package br.com.xti.jdbc;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;

public class AcessoBanco {

public static void main(String[] args) throws Exception {

    String sql = "select codigo, nome, sexo, email from pessoa";
    String url = "jdbc:oracle:thin:@localhost:1521:xe";//url informa local que está o banco de dados, localhost = máquina que está sendo utilizada

    try (Connection con = DriverManager.getConnection(url, "secretariaDDE", "entomologia");//cria conexão com o banco de dados
    PreparedStatement stm =  con.prepareStatement(sql); //encaminhar requisições ao servidor
    ResultSet rs = stm.executeQuery()) {//resulta lista de registros da tabela

        while(rs.next()) {
            String s = rs.getString("codigo")
                    + "; " + rs.getString("nome")
                    + "; " + rs.getString("sexo")
                    + "; " + rs.getString("email");
            System.out.println(s); //imprimi todos os dados solicitados acima que encontrar na tabela
        }
    }
}

}

package br.com.xti.jdbc;

public class Conta {

int numero;
String cliente;
double saldo;

public Conta(int numero, String cliente, double saldo) {
    this.numero = numero;
    this.cliente = cliente;
    this.saldo = saldo; 
}

public String toString() {
    return numero + "," + cliente + "," + saldo;
}

}

package br.com.xti.jdbc;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;

public class ContaCRUD { //CRUD = create, read, update, delete [os métodos utilizam a mesma conexão]

public void transferir(Connection con, Conta origem, Conta destino, double valor) throws SQLException{
    if(origem.saldo >= valor){

        try{
            con.setAutoCommit(false); //conexão não poderá auto comitar todas as operações, trata as operações conjuntamente
            /*  SAQUE CONTA ORIGEM  */
            origem.saldo -= valor;
            alterar(con, origem);

            /*  DEPÓSITO CONTA DESTINO  */
            destino.saldo += valor;
            alterar(con, destino);

            con.commit(); //fecha a transação se tudo for bem sucedido
        } catch(Exception e){
            con.rollback(); //se der problema desfaz a transação
        }
    }   

}

public void criar(Connection con, Conta conta) throws SQLException {
    String sql = "insert into conta values (?,?,?)";//insere na tabela conta onde o numero for o que eu informar
    try(PreparedStatement stm = con.prepareStatement(sql)) {
        stm.setInt(1, conta.numero);
        stm.setString(2, conta.cliente);
        stm.setDouble(3, conta.saldo);
        stm.executeUpdate();
    }
}

public void alterar(Connection con, Conta conta) throws SQLException {
    String sql = "update conta set cliente=?, saldo=? where numero=?";//altera da tabela conta onde o numero for o que eu informar
    try(PreparedStatement stm = con.prepareStatement(sql)) {
        stm.setString(1, conta.cliente);
        stm.setDouble(2, conta.saldo);
        stm.setInt(3, conta.numero);
        stm.executeUpdate();
    }
}

public void excluir(Connection con, Conta conta) throws SQLException {
    String sql = "delete conta where numero=?"; //deleta da tabela conta onde o numero for o que eu informar
    try(PreparedStatement stm = con.prepareStatement(sql)) {
        stm.setInt(1, conta.numero);
        stm.executeUpdate();
    }
}

public List<Conta> ler(Connection con) throws SQLException{
    List<Conta> lista = new ArrayList<>();
    String sql = "select numero,cliente,saldo from conta";
    try(PreparedStatement stm = con.prepareStatement(sql);
            ResultSet rs = stm.executeQuery()) {
        while(rs.next()){
            lista.add(new Conta(rs.getInt(1), rs.getString(2), rs.getDouble(3)));
        }
    }

    return lista;
}

public static void main(String[] args) throws SQLException {

    String url = "jdbc:oracle:thin:@localhost:1521:xe";
    try(Connection con = DriverManager.getConnection(url, "secretariaDDE", "entomologia")){
        ContaCRUD crud = new ContaCRUD();

        List<Conta> contas = crud.ler(con);
        for (Conta conta : contas) {
            System.out.println(conta);
        }

        Conta origem = contas.get(0); //pega primeira conta da lista
        Conta destino = contas.get(1); //pega segunda conta da lista
        crud.transferir(con, origem, destino, 500);

        contas = crud.ler(con);
        for (Conta conta : contas) {
            System.out.println(conta);
        }
    }
}

}

package br.com.xti.jdbc;

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

public class IncluirDados {

public static void main(String[] args) throws Exception{
    /*  INCLUSÃO DE APENAS UM REGISTRO
    String url = "jdbc:oracle:thin:@localhost:1521:xe";
    String sql = "insert into pessoa values(3, 'Caio', 'M', 'caio@xti.com.br')";
    try(Connection con = DriverManager.getConnection(url, "secretariaDDE", "entomologia");
    PreparedStatement stm = con.prepareStatement(sql)) {
    stm.executeUpdate();

    } */

    //  INCLUSÃO DE VÁRIOS REGISTROS
    String url = "jdbc:oracle:thin:@localhost:1521:xe";
    String sql = "insert into pessoa values(?,?,?,?)"; //? deixa aberto as opções para inclusão na tabela
    String[] pessoas = {"Sandra", "Beatriz", "Juliana", "Fatima", "Veranda", "Tereza", "Leila"};
    try(Connection con = DriverManager.getConnection(url, "secretariaDDE", "entomologia")) {

            try(PreparedStatement stm = con.prepareStatement(sql)) {
                for (int i = 0; i < pessoas.length; i++) {
                    stm.setInt(1, i+4);//i+4 insere a partir da posição 4, já tem 3 na tabela original
                    stm.setString(2, pessoas[i]);
                    stm.setString(3, "F");
                    stm.setString(4, pessoas[i].toLowerCase() + "@xti.com.br"); //construção do email, nome em minúsculo completa com @xti.com.br
                    stm.addBatch(); //executa vários comandos de inclusão de uma única vez
            } stm.executeBatch();
        } catch(SQLException e){}

            sql = "select nome, email from pessoa";
            try(PreparedStatement stm2 = con.prepareStatement(sql);
                ResultSet rs = stm2.executeQuery()) {
                while(rs.next()) {
                System.out.println(rs.getString(1) + ":" + rs.getString(2));    
            }
        }
    }
}   

}

rafaelsaidbc commented 7 years ago

Acesso banco de dados

rafaelsaidbc commented 7 years ago

Dados da conta

rafaelsaidbc commented 7 years ago

Canta CRUD - create, r-, update, delete

rafaelsaidbc commented 7 years ago

Inclusão de novos dados no banco de dados