Comentários

0%

FOCO NO MERCADO DE TRABALHO

BANCO DE DADOS RELACIONAL E NOSQL

Jesimar da Silva Arantes

Utilização de banco de dados

Criação de banco de dados relacional para armazenamento das informações da rota do robô e sua integração com Java.

Fonte: Shutterstock.

Deseja ouvir este material?

Áudio disponível no material digital.

SEM MEDO DE ERRAR

A startup em que você trabalha lhe passou um conjunto de atividades, como:

Após instalados o XAMPP com MySQL e phpMyAdmin, você decidiu criar um BD chamado bd_simulador_robo e uma tabela chamada rota por meio do phpMyAdmin; para isso, você escreveu o Código 4.13 a seguir. 

Código 4.13 | Comandos SQL para criação do BD e da tabela no MySQL
CREATE DATABASE `bd_simulador_robo`;

CREATE TABLE `bd_simulador_robo`.`rota`( 
    `posx` DECIMAL(10) DEFAULT NULL, 
    `posy` DECIMAL(10) DEFAULT NULL, 
    `codigo` INT(10) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(`codigo`)
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = latin1; 
Fonte: elaborado pelo autor.

Após isso, você decidiu partir do Código 4.6 e adicionar os recursos em Java que armazenam as posições do robô no BD. Dessa maneira, você escreveu o Código 4.14 (repare que foram destacadas apenas as partes em que houve alteração, e o código completo pode ser acessado no GitHub do autor). Nas linhas 4 a 6, temos a declaração três novas variáveis para comunicação com o BD; nas linhas 12, 17, 22 e 27, temos uma invocação do BD para inserir a posição atual do robô toda vez que ele se mover, dessa maneira, no BD, ficará armazenado toda a rota percorrida pelo robô; por fim, nas linhas 34 a 49, temos a declaração da classe Consultas, em que definimos o método inserir posição, e um programa pronto com todas as alterações requisitadas.

Código 4.14 | Adaptações na implementação para suportar armazenar a rota do robô
... // diversas importações foram omitidas
public class AppGUI extends Application {
    ... // diversas declarações foram omitidas
    private final ConexaoBD conBD = new ConexaoBD();
    private final Connection connection = conBD.getConexao();
    private final Consultas consultas = new Consultas();
    ... // o método main foi omitido
    public void start(Stage janela) {
        cena.setOnKeyPressed((evt) -> {
            if (evt.getCode() == KeyCode.UP) {
                ... // algumas linhas foram omitidas
                consultas.inserirPos(connection,
                       robo.getPosicaoX(), robo.getPosicaoY());
            }
            if (evt.getCode() == KeyCode.DOWN) {
                ... // algumas linhas foram omitidas
               consultas.inserirPos(connection,
                       robo.getPosicaoX(), robo.getPosicaoY());
            }
            if (evt.getCode() == KeyCode.LEFT) {
                ... // algumas linhas foram omitidas
                consultas.inserirPos(connection,
                       robo.getPosicaoX(), robo.getPosicaoY());
            }
            if (evt.getCode() == KeyCode.RIGHT) {
                ... // algumas linhas foram omitidas
                consultas.inserirPos(connection,
                       robo.getPosicaoX(), robo.getPosicaoY());
            }
        });
    }
}

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class Consultas {    
   public void inserirPos(Connection conn, float posX, float posY){
        try {
            Statement st = conn.createStatement();
            String sql = "INSERT INTO `rota` (posx, posy) " + 
                    "VALUES (" + posX + ", " + posY + ")";
            st.executeUpdate(sql);
            st.close();
        } catch (SQLException ex) {
            System.out.println(ex);
        }
    }
}

//Foi adicionado uma classe chamada ConexaoBD que é semelhante à //mostrada no Código 4.12 nas linhas 19 a 60. 
Fonte: elaborado pelo autor.
Bons estudos!

AVALIE ESTE MATERIAL

OBRIGADO PELO SEU FEEDBACK!