Comentários
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.
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.
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;
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.
... // 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.