Criando um cliente MySQL simples no NetBeans

O NetBeans tem uma boa interface para se conectar so DB, mas muitos comandos SQL têm de ser inseridos como uma frase inteira. Eu criei um aplicativo Swing para inserir e visualizar dados em um tabela do banco de dados MySQL. A amostra é bem simples, disponível para uma tabela específica e sem uma operação de atualização ou exclusão. Ele seria estendido, mas o documento seria mais longo e complidado, imagino Eu.

ÍNDICE

Conectando oa banco de dados MySQL

Espero que os leitores já tenham um ambiente de servidor de banco de dados of MySQL em funcionamento, tendo um banco de dados com suficiente concessão para um determinado usuário. Nesta amostra,

database name: nonidb
user: noniko
password: (blank)
<- por ser apenas uma amostra. Caso tenha dados importantes, defina uma senha apropriada!

Também, você iria obter um arquivo de driver JDBC para o MySQL. Preparei o arquivo mysql-connector-java-3.1.6-bin.jar através do site da Web de desenvolvedor do MySQL.

Agora, vamos para o NetBeans. Clique na aba "Executável" para trocar de janela para a qual normalmente você pode ver a janela "Projetos" ou "Arquivos".

Selecione "Adicionar driver" na janelça Executável

Você irá encontrar aqui o nó "Bancos de dados". Abra este nó para obter o nó "Drivers" abaixo do mesmo. Caso você abra mais para mostrar o conteúdo de "Drivers", somente irá encontrar "JDBC-ODBC". A primeira coisa a ser feita á a de adicionar o driver MySQL. Clique com o botão direito do mouse no nó "Drivers", para mostrar o menu de contexto e selecione "Adicionar driver".

A janela de configurações é aberta.

Encontre a localização do arquivo de driver JDBC.

Ao clicar no botão "Adicionar", você pode procurar pelo arquivo de friver de forma gráfica. No caso acima, preparei a pasta D:\nonidata\nb4worksnew, para conter as pastas de projeto e a subpasta lib para conter arquivos de biblioteca.

Caso você selecione a localização do arquivo de driver, Classe e nome do driver são automaticamente definidas. No caso do driver MySQL JDBC, o nome da classe antiga é definido primeiro. Mas, clique no botão "Localizar" e então a barra de andamento abaixo se torna ativa e finalmente "Concluída a procura por classes de driver" é mostrada.

A seguir, abra a caixa "Classe de driver" para configuração. Você pode selecionar o nome atual da classe do driver JDBC.

Altere o nome da cvlasse para o da versão atual.

Clique em "OK" e o novo driver será adicionado sob o nó "Driver". Clique com o botão direito do mouse no mesmo para selecionar "Conectar usando..." no menu de contexto.

Selecione "Conectar usando..." no menu de contexto

A janela de configurações é aberta. Aqui o URL, Nome de usuário e Senha do Banco de Dados são necessários (neste caso a senha está em branco). Clique em OK e verá a mensagem "Conexão estabelecida" na barra de andamento abaixo. A página poderá ser trocada para "Avançado", mas neste caso não há nenhuma configuração avançada necessária.

Após a conexão ter sido estabelecida, aparece um nó para esta conexão. Vamos proseguir para a próxima etapa.

Criando uma tabela de amostra

Clique com o botão direito do mouse no nó para a conexão acima estabelecida e selecione "Criar tabela...".

Selecione "Criar tabela" no menu de contexto.

Aparece uma janela para definir a atabela a ser criada. Para exibir a connfiguração necessária, esta janela precisa ser expandida manualmente. As configurações importantes são Chave, Nome da coluna, Tipo e tamanho de dados, dependendo to tipo de dados.

Criando uma tabela no NetBeans

Neste caso, criei uma tabela simples "cars" tendo carid, name, vendor and type como campos. O campo Carid é a chave principal. Todos os campos têm um tipo de dados de VARCHAR. Somente Carid tem 10 para o tamanho e todos os outrso têm 20.

Após criar a tabela, você verá seu nó sob o nó da conexão. A estrutura da tabela "cars" éw exibida.

A árvore do nó da tabela criada

Inserir os primeiros dados

Agora vamos inserir a primeira linha ao enviar um comando SQL. Clique com o botão difreito do mouse em qualquer nó sob o nó da conexão para exibir o item de menu "Executar comandos..".

Aparece então a janela grande de comandos de operação no mesmo lugar do editor de código-fonte. Muito grande, portanto, não vou mostrar a captura de tela de toda a aparência. As partes importantes são, em primeiro lugar, a área de texto para inserir o comando.

Insira a frase inteira do comando.

Clique no botão "Executar" e, se o comando for válido, você poderá ver a mensagem "Comando executado com êxito" abaixo. Para estar seguro, clqiue com o botão direito do mouse no nó "cars" e selecionar "Visualizar dados".

Clique com o botão direito do mouse no nó "cars" para visualizar os dados.

Primeiros dados inseridos

Legal! Os primeiros dados foram inseridos com êxito. Mas você pode considerar que a frase inteira "Inserir em..." como uma que incomoda. Eu considerei. Portanto, tomei a decisão de desenvolver um aplicativo para inserir dados através de uma operação mais gráfica.

Criando um novo projeto Java

Vamos criar um novo projeto Java para o aplicativo. Selecione na barra de menus "Arquivo"->"Novo projeto". No assistente Novo projeto, selecione "Geral" -> "Aplicativo Java" como o tipo de projeto. No meu caso o nome do projeto é "mysqloperation" e a localização é "d:\nonidata\nb4worksnew\mysqloperation". Marque "Criar projeto principal".

Após criar o projeto, crie um novo pacote. No meu caso, "mysqlop".

Criando uma classe utilitária para conectar ao banco de dados

A operação de banco de dados no Java é muito complicada, requerendo a conexão, declaração, resultset e muitos try&catch. Portanto, usei uma classe utilitária com tais operações.

Todo o código é aqui mostrado, MyDBConnection.java.

init() método para conectar ao banco de dados MySQL.

getConnection() método a ser chamado após o método init(), para conceder o acesso à outra classe que estabeleceu a conexão.

dois métodos close() e destroy() são para configurar o fim da operação. Fechando a conexão, declaração ou resultset requer try&catch, portanto, eles forma extraídos aqui.

Para usar este arquivo, a classpath para o driver JDBC pfrecisa ser definda para este projeto. Clique com o botão direito do mouse no projeto "mysqloperation", e selecione "Propriedades..." no menu de contexto. Na janela "Propriedades do projeto", selecione "Build"->"Compilinado o código-fontwe". Clique no botão "Adicionar pasta JAR" junto a configuração ""Classpath para compliar o código-fonte", para que você posssa procurar pela localização do arquivo JDBC jar.

Adicionando o arquivo JDBC jar para a classpath

Criando um modelo de tabela

Então preparei um Modelo de tabela personalizada para a JTable a ser usada neste aplicativo.

Todo o código é aqui mostrado, CarTableModel.java.

Para escrever este código usei alguma boas ferramentas do NetBeans.
Primeiro, crie um novo arquivo de Classe Java denominado CarTableModel.java. É um modelo simples e vazio, apenas com a declaração de pacote e classe.


Edite manualmente a declaração de classe para estender a classe "AbstractTableModel". O editor em breve irá mostrar o sublinhado vermelho e ondulado para mostrar. Uma causa para isso é a falta da importação da classe "javax.swing.table.AbstractTableModel". Esse erro é corrigido ao clicar com o botão direito do mouse em algum ligar do código e seleciona "Corrigir importações"

Use a ferramenta "Corrigir importações".

Você pode verificar se a declaração.

import javax.swing.table.AbstractTableModel;

foi inserida junto ao topo do código-fonte.

Mas o sublinhado vermelho ainda permanece. A causa remanescente é falta de implementação dos métodos abstratos apropriados.
Isso é corrigido pela ferramenta "sobrescrevendo o método" chamada desta forma...

Use a ferramenta "Sobrescrever métodos".

As implementações necessáris são extraídas selecionando "Mostrar somente métodos abstratos".

As implementações necessárias são listadas.

Selecione todos os três métodos ao clicar no nó e em "OK".

As implementações necessárias são inseridas automaticamente.

Agora a linha vermelha desapareceu!

De fato, nós também precisamos sobrescrever o método getColumnName(int param), caso contrário nós não iremos obter cabeçalhos personalizados para a tabela.

Vamos preencher o conteúdo.
O código é especificado para acessar a tabela "cars" específica, portanto, o número de colunas é fixado em 4.
Cada nome de coluna também é conhecido e pode ser definido diretamente.

Desta vez usei Generics, um novo recurso do JDK 5.0, pela primeira vez. Funcionou com êxito no NB (Aplausos!)

Criando a classe JFrame Form -o Form design

Vamos agora criar o aplicativo JFrame Form, a classe principal deste projeto! "JFrame Form" pode ser selecionado no novo assistente. No meu caso o nome é "InsertTable", que criou um arquivo de código-fonte, "InsertTable.java".

Primeiro, desenhe o formulário. Ela deveria ser uma janela longa na vertical, portanto, corrigi o tamanho do formulário ao inves de usar "packing".
Selecione o nó "JFrame" na janerla Inspetor para mostrar suas propriedades. Altere a "Política de tamanho de formulário" do padrão "Generate pack()" para"Generate Resize Code".

Para corrigir o tamanho do formulário.

A propriedade "Tamanho do formulário" se torna editável. Edite-a como:

O tamanho do formulário editado.

Este formulário será separado verticalmente em três partes:

(1)JTextfields ou JComboBox para inserir os novos dados.
(2)JButton para enviar dados e mostrar a mensagem.
(3)A JTable.

As primeiras duas deveriam estar localizadas em cada JPanel e a JTable em um JScrollPane. Estas são as partes básicas.

JPanels e JScrollPane para localizar componentes.

Observe que as posições verticais dos nós não significa sua localização real. Quero dizer, o dataPanel, sendPanel e tablePane estão localizados para o Norte, Centro ou Sul do BorderLayout, respectivamente.

No dataPanel, 3JTextFields e uma JComboBox para inserir dados e 4JLabels para explicações deveriam ser localizadas. Decidi que GridLayout é o melhor para definir estas localizações. O layout padrão no JPanel é FlowLayout no NetBeans. Ele precisa ser modificado:

Altere para GridLayout

Então as propriedades deste GridLayout são exibidas. Defina o número de coluna para 2 e o número da linha para 4.

A seguir, localize os componentes. Eles deveriam ser movidos ao arrastar e soltar no formulário, caso você não esteja satisfeito com a localização.

Movendo a JComboBox dentro do GridLayout.

O componente pode escapar para uma possição bem incorreta, tal como para outro painel. Não se preocupe, você também pode mover sua localização ao arrastar e soltar dentro da janela Inspetor.

Moviendo a JComboBox dentro da janela Inspetor.

Após todos os componentes terem sido definidos, personalize seus nomes para mostrar suas funções.
Personalize também a propriedade de texto para cada JLabel, e apague isso em cada JTextField. Aqui está um exemplo de edição da propriedade "texto" do JLabel:

Personalizar a propriedade "texto" para mostrar a "ID:" como uma JLabel

Então sendPanel para localizar o JButton e a JLabel. Também, o GridLayout é definido para este JPanel, com uma coluna e duas linhas. O nome e a propriedade "texto" são personalizados.

Desta forma, os componentes, a não ser a JTable, são organizados como abaixo:

Os componentes sem uma JTable foram personalizados.

Personalizando a JTable

Como mostrado acima, neste ponto a JTable tem uma estrutura 4x4 e dados vazios. Vamos personalizá-la para mostrar o conteúdo da tabela "cars" do banco de dados MySQL.

Selecione agora a JTable denominda "carTable" na janela Inspetor para mostrar suas propriedades. Encontre a propriedade "model" e clique no botão "..." na borda direita.

carTable e sua propriedade "model"

A janela do editor é aberta. A estrutura 4x4 padrão é definida nesta janela. Vamos modificar "Modo de seleção" de "TableModelEditor" para "FormConnection".

Trocando do editor de tabela padrão para o modo de conexão de formulário.

No modo Conexão de formulário, clique no botão "Código do usuário" na janela de opções.

Modo Conexão de formulário

A seguir, examine a parte inferior desta janela. O botão "Avançado" está lá. Clique no mesmo!

Botão "Avançado" na parte inferior da janela.

Aparece uma janela para editar antes de depois o código da definição da TableModel para a JTable. Desta vez selecione ambos para editar

O método denominado getResultFromCars deveria ser criado manualmente no código-fonte da "InsertTable.java", como:

 public ResultSet getResultFromCars() {
        
        ResultSet rs=null;
        
        try{
            rs=stmt.executeQuery("Select * from cars");
        
        }
        catch(SQLException e){}
        
        return rs;
        
    } 

Clique em OK para retornar para o "Código do usuário" para preencher.

Observe que há um ponto e vírgula ";" para terminar a fase NÃO DEVERIA SER inserido. Por quê? Verifique o código-fonte. Verifique o método InitComponents(). Aqui!

Área azul claro "Protegida" "Não editável". Quem disse isso? Ha-ha-ha! Você pode editar livremente por meios preparados pelo NetBeans!

Primeira execução do InsertTable

Para efetuar uma priimeira execução de teste desta JTable personalizada, ainda há algo a fazer. Primeiro, a declaração.

private MyDBConnection mdbc;
private java.sql.Statement stmt;

Elas devem ser colocadas em algum lugar do código-fonte. Perto do EOF, junto outras variáveis, seria bom.

A seguir, o construtor. Observe que deveríamos adicionar a declaração de geração junto ao mesmo

para evitar aquele aborrecido erro de compilação, "java.sql.SQLException is not reported...".

Todo o conteúdo do construtor é:

 public InsertTable() throws  Exception{
        
         mdbc=new MyDBConnection();
         mdbc.init();
         Connection conn=mdbc.getMyConnection();
         stmt= conn.createStatement();
        
        initComponents();
    }  

Um mais para evitar o mesmo erro de compilação. Edite o método principal preparado pelo NetBeans:

Adicione try-catch ao método principal

Agora, vamos executar o projeto! Aparece uma janela para selecionar a classe principal. Na lista, você somente irá encontrar "InsertTable.class". Selecione-a.

A tabledata do MySQL foi mostrada

A única linha existente na tabela "cars" do banco de dados MySQL foi exibida!

Tomando um pouco de cuidado...

Agora que podemos exibir os dados existentes do MySQL para a JTable, vamos parar e tomar um pouco de cuidado para obter um aplicativo melhor.

Uma coisa é a terminação apropriada deste aplicativo. Todas as sessões com MySQL(conexão. declaração, resultsets) precisam ser fechadas.
Este aplicativo é terminado ao fechar a janela. Portanto, deveríamos adicionar um método de processamento de evento para o evento WindowClosing.
Selecione "JFrame" na janela Inspetor para mostrar sua janela de propriedades, e a seguir clique em "Eventos" para trocar de página. Localize o evento "windowClosing". Ele está definido como <nenhum> por padrão, mas quando você clica na palavra <nenhum>, ela será automaticamente modificada para "formWindowClosing"..., pressione a tecla Enter enquanto esta linha estiver selecionada.

Definindo o evento windowClosing do JFrame

O código-fonte aparece para ativar a edição do método.

Edite o método "formWindowClosing".

Feche a declaração e a conexão.

A outra coisa é definir os itens na JComboBox denominados typeCombo. Sim, eles deveriam estar definidos para selecionar o tipo de direção de um carrro.

Selecione o nó "typeCombo" na janerla Inspetor para mostrar suas propriedades. Localize a propriedade "model" e clique no botão "..." na borda direita, da mesma forma que fizemos para definir o TableModel para a JTable.
Aparece uma janela e desta vez nós usamos o ComboBoxModelEditor padrão.

Insira um novo item no campo"Item:" e clique no botão "Adicionar". Isso é fácil! Preparei o itens "FF", "FR", "MR" and"4WD" como o tipo de direção. Há algo mais?

Inserindo dados no MySQL

A parte final! A inserção de dados no MySQL deveria ser feito ao clicar no botão "Enviar" (o botão do JButton denominado "sendButton").

No Editor de IGU do NetBeans, é muito fácil criar o método de procesamento de evento para o JButton. Basta clicar duas vezes no JButton no formulário.

O método "sendButtonActionPerformed" é criado no arquivo de código-fonte. Vamos preencher seu conteúdo:

private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_sendButtonActionPerformed
        // TODO add your handling code here:    String carid=idField.getText();
        String name=nameField.getText();        
        String vendor=vendorField.getText();
        String type=(String)typeCombo.getSelectedItem();
        
        String insertStr="";
        
        try{
            
            insertStr="insert into cars (carid, name, vendor, type) values("quotate(carid)+","
                    +quotate(name)+","
                    +quotate(vendor)+","
                    +quotate(type)
                    +")";
            
            int done=stmt.executeUpdate(insertStr);
            
            commentLabel.setText("1 row inserted");  etContentPane().removeAll();
            initComponents();  }
        catch(Exception e){
            commentLabel.setText("Error occurred in inserting data");
            e.printStackTrace();
        }   //GEN-LAST:event_sendButtonActionPerformed

Observe que o método initComponents é chamado após a inserção dos dados, e após remover o painel do conteúdo atual. É necessário atualizar a aparência da JTable...Caso tivéssemos mais conhecimento, poderíamos atualizar somente a JTable, ao invés de todo o container. Isso é, como dito em Japonês, é como "Ceifar o tofu com um machado". Desculpe!

Observe aqui que o método quotate é chamado. Eu o criei para não ter tantas aspas:

 public String quotate(String content){

return "'"+content+"'";
}

Agora temos todo o código para o InsertTable.java.

Execute o projeto! Insira dados e clique no botão "Enviar". Agora você pode ver outra linha inserida na JTable. Repita inserindo algumas mais!

Operando o aplicativo completado

...E vamos assegurar que estes dados também serão visíveis de um utilitário do NetBeans.

Trabalho duro! Mas através deste projeto, aprendemos:

  • Como operar um banco de dados a partir de um utilitário do NetBeans.
  • Como "editar" os códigos "protegidos" na área azul clara.
  • Como usar a TableModel érsonalizada para a JTable.

...e assim por diante.

 

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2018, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo