Entre todas as linguagens que um desenvolvedor possa utilizar, pelo menos um banco de dados é comum a todas elas: MySQL. Utilize PHP, C, Java, Python (talvez não .NET que o pessoal é meio paranoico com Microsoft), ou qualquer outra linguagem o banco de testes será um MySQL.
Então neste artigo veremos como utilizar o MySQL com o Docker (essa mesma técnica pode ser aplicada para o MariaDB ou Postgres - respeitando obviamente a porta deste último). São apenas 3 passos a realizar:
1º) Baixar imagem oficial:
$ docker pull mysql2º) Rodar o contêiner:
$ docker run --name mybanco -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql3º) Chamar o administrativo do banco:
$ docker exec -it mybanco mysql -pObviamente que não iremos parar por aqui pois não teria a menor graça. Vamos acessar o banco através de um programa Java, ainda com o administrativo aberto crie uma base de dados com o seguinte comando:
> create database teste; > use teste; > show tables;Agora precisamos de um editor para o Java, para meus testes sempre utilizo o BlueJ e o Conector JDBC do MySQL deve ser disponibilizado, para proceder isso:
- Baixar o conector JDBC do MySQL no driver oficial ou através desse link.
- Acessar no menu principal "Tools | Preferences".
- Ir para a pasta "Libraries".
- Pressionar o botão "Add" e localizar o conector baixado.
import java.sql.*; import java.text.SimpleDateFormat; public class Conexao { private Connection con; public static void main(String [] args) { new Conexao().executar(); } public void executar() { try { criar(); selecionar(); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } catch (SQLException e) { System.out.println(e.getMessage()); } } private void conexao() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/teste", "root", "root"); } private void criar() throws ClassNotFoundException, SQLException { conexao(); // Criar a tabela Statement stm = con.createStatement(); stm.executeUpdate( "CREATE TABLE funcionario (" + " matricula INT NOT NULL, " + " nome VARCHAR(50)," + " PRIMARY KEY (matricula))"); stm.close(); // Adicionar 100 funcionarios PreparedStatement pstm = con.prepareStatement( "INSERT INTO funcionario (matricula, nome) VALUES (?, ?)"); int tot = 0; for (int i = 0; i < 100; i++) { pstm.setInt(1, i); pstm.setString(2, "Funcionário " + i); tot += pstm.executeUpdate(); } System.out.println("Inseridos : " + tot); pstm.close(); con.close(); } private void selecionar() throws ClassNotFoundException, SQLException { SimpleDateFormat fdt = new SimpleDateFormat("hh:mm:ss:SSSS"); conexao(); // Varrer todos os dados Statement stm = con.createStatement(); ResultSet res = stm.executeQuery( "SELECT nome, matricula FROM funcionario"); int x = 0; String nome = null; int matricula; System.out.println("Tempo Inicial: " + fdt.format(new java.util.Date())); while (res.next()) { nome = res.getString(1); matricula = res.getInt(2); x += 1; } System.out.println("Tempo Final: " + fdt.format(new java.util.Date())); System.out.println("O último que li foi " + nome); System.out.println("Total de " + x); } }Na primeira parte deste programa será criada uma tabela na base teste e populada com 100 registros de funcionário, na segunda parte é realizada uma consulta para verificar a existência dos registros e o tempo de performance de leitura.
Assista o vídeo para tirar quaisquer dúvida de como proceder:
Pronto o MySQL está pronto para seus testes, uma boa vantagem é que podemos criar várias instâncias (contêineres) do banco para múltiplos testes ou mesmo destruir sem deixar rastro de quaisquer dados.
Obrigado e até a próxima
Fernando Anselmo
0 comentários:
Postar um comentário