Jtable e Demonstração de inserção de dados em MySql

2 respostas
O

Olá Pessoal Estou a fazer um programa de gestão de Itens multimédia, neste momento tenho o código de inserção a funcionar e aproveito para deixar para quem precisar, visto aperceber-me que muita gente o procura:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        try 
 		{ 
 		Class.forName("com.mysql.jdbc.Driver"); 
 		Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bibliotecamultimedia?user=xxxxxx&password=xxxxxx");
                System.out.println("Conexao OK"); 
 	 	PreparedStatement st = con.prepareStatement( "INSERT INTO cd (titulo, artista, nummusicas, temtotal, flag, comentario) VALUES (?,?,?,?,?,?)");
                String titulo = jTextField1.getText();
                String artista = jTextField2.getText();
                String nummusicas = jTextField3.getText();
                String temtotal = jTextField4.getText();
                String flag = jTextField5.getText();
                String comentario = jTextField6.getText();
                st.setString(1, titulo);
                st.setString(2, artista);
                st.setString(3, nummusicas);
                st.setString(4, temtotal);
                st.setString(5, flag);
                st.setString(6, comentario);
                st.executeUpdate();
                JOptionPane.showMessageDialog(null,"Os dados foram introduzidos com Sucesso.");
 		st.close(); 
 		con.close(); 
 		}catch (Exception e){ 
 		return; 
 		}
    }

Neste momento estou com outro JFrame no qual tenho uma JTable onde quero apresentar os dados que tenho na base de dados e estou com um bocado de dificuldade em perceber o funcionamento, já li este site http://www.netbeans.org/kb/articles/mysql-client.html#db08 mas não me ajudou muito, se alguem me podesse ajudar ou indicar onde eu possa ler para aprender, Muito Obrigado a todos.

2 Respostas

maruero

Cara segue abaixo 2 codigo exemplo tirado do livro Java como programar

O 1º cria um modelo de tabela.
O 2º instacia uma tabela com o modelo criado no primeiro codigo.

A respeito da criação de modelo de tabelas será um pouco complicado se vc é iniciante na arquitetura swing, qualquer duvida poste ai q a galera responde.

Modifique o codigo para se adaptar a sua necessidade e vai modificando ele pra vc aprender melhor.

// Fig. 25.28: ResultSetTableModel.java
// Um TableModel que fornece dados ResultSet a uma JTable.
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;

// Linhas e colunas do ResultSet são contadas a partir de 1 e linhas e
// colunas JTable são contadas a partir de 0. Ao processar
// linhas ou colunas de ResultSet para utilização em uma JTable, é
// necessário adicionar 1 ao número de linha ou coluna para manipular
// a coluna apropriada de ResultSet (isto é, coluna 0 de JTable é a
// coluna de ResultSet 1 e a linha de JTable 0 é a linha de ResultSet 1).
public class ResultSetTableModel extends AbstractTableModel
{
   private Connection connection;
   private Statement statement;
   private ResultSet resultSet;
   private ResultSetMetaData metaData;
   private int numberOfRows;

   // monitora o status da conexão de banco de dados
   private boolean connectedToDatabase = false;
   
   // construtor inicializa resultSet e obtém seu objeto de metadados;
   // determina número de linhas
   public ResultSetTableModel( String driver, String url, 
      String username, String password, String query ) 
      throws SQLException, ClassNotFoundException
   {
      // carrega classe de driver do banco de dados
      Class.forName( driver );

      // conecta-se ao banco de dados
      connection = DriverManager.getConnection( url, username, password );

      // cria Statement para consultar banco de dados
      statement = connection.createStatement(
         ResultSet.TYPE_SCROLL_INSENSITIVE,   
         ResultSet.CONCUR_READ_ONLY );        

      // atualiza status de conexão de banco de dados 
      connectedToDatabase = true;         

      // configura consulta e a executa
      setQuery( query );
   } // fim do construtor ResultSetTableModel 

   // obtém a classe que representa o tipo de coluna
   public Class getColumnClass( int column )throws IllegalStateException
   {
      // assegura que o banco de dados conexão está disponível
      if ( !connectedToDatabase )                                       
         throw new IllegalStateException( "Not Connected to Database" );

      // determina a classe Java de coluna
      try 
      {
         String className = metaData.getColumnClassName( column + 1 );
         
         // retorna objeto Class que representa className
         return Class.forName( className );              
      } // fim do try
      catch ( Exception exception ) 
      {
         exception.printStackTrace();
      } // fim do catch
      
      return Object.class; // se ocorrerem os problemas acima, assume tipo Object
   } // fim do método getColumnClass 

   // obtém número de colunas em ResultSet
   public int getColumnCount()throws IllegalStateException
   {   
      // assegura que o banco de dados conexão está disponível
      if ( !connectedToDatabase ) 
         throw new IllegalStateException( "Not Connected to Database" );

      // determina número de colunas
      try 
      {
         return metaData.getColumnCount(); 
      } // fim do try
      catch ( SQLException sqlException ) 
      {
         sqlException.printStackTrace();
      } // fim do catch
      
      return 0; // se ocorrerem os problemas acima, retorna 0 para o número de colunas
   } // fim do método getColumnCount 

   // obtém nome de uma coluna particular em ResultSet
   public String getColumnName( int column )throws IllegalStateException
   {    
      // assegura que o banco de dados conexão está disponível
      if ( !connectedToDatabase ) 
         throw new IllegalStateException( "Not Connected to Database" );

      // determina o nome de coluna
      try 
      {
         return metaData.getColumnName( column + 1 );  
      } // fim do try
      catch ( SQLException sqlException ) 
      {
         sqlException.printStackTrace();
      } // fim do catch
      
      return ""; // se ocorrerem problemas, retorna string vazia para nome de coluna
   } // fim do método getColumnName

   // retorna número de linhas em ResultSet
   public int getRowCount()throws IllegalStateException
   {      
      // assegura que o banco de dados conexão está disponível
      if ( !connectedToDatabase ) 
         throw new IllegalStateException( "Not Connected to Database" );
 
      return numberOfRows;
   } // fim do método getRowCount 

   // obtém valor na linha e coluna particular
   public Object getValueAt( int row, int column )
      throws IllegalStateException
   {
      // assegura que o banco de dados conexão está disponível
      if ( !connectedToDatabase ) 
         throw new IllegalStateException( "Not Connected to Database" );

      // obtém um valor na linha e coluna de ResultSet especificada 
      try 
      {
         resultSet.absolute( row + 1 );
         return resultSet.getObject( column + 1 );
      } // fim do try
      catch ( SQLException sqlException ) 
      {
         sqlException.printStackTrace();
      } // fim do catch
      
      return ""; // se ocorrerem problemas, retorna objeto string vazio
   } // fim do método getValueAt 
   
   // configura nova string de consulta de banco de dados
   public void setQuery( String query ) 
      throws SQLException, IllegalStateException 
   {
      // assegura que o banco de dados conexão está disponível
      if ( !connectedToDatabase ) 
         throw new IllegalStateException( "Not Connected to Database" );

      // especifica consulta e a executa
      resultSet = statement.executeQuery( query );

      // obtém metadados para ResultSet
      metaData = resultSet.getMetaData(); 

      // determina o número de linhas em ResultSet
      resultSet.last();                   // move para a última linha
      numberOfRows = resultSet.getRow();  // obtém número de linha
      
      // notifica a JTable de que modelo foi alterado
      fireTableStructureChanged();           
   } // fim do método setQuery 

   // fecha Statement e Connection
   public void disconnectFromDatabase()            
   {                                               
      if ( !connectedToDatabase )                  
         return;                                   
                                                   
      // fecha Statement e Connection
      try                                          
      {                                            
         statement.close();                        
         connection.close();                       
      } // fim do try
      catch ( SQLException sqlException )          
      {                                            
         sqlException.printStackTrace();           
      } // fim do catch
      finally  // atualiza status de conexão de banco de dados 
      {                                            
         connectedToDatabase = false;              
      } // fim do finally                            
   } // fim do método disconnectFromDatabase 
}  // fim da classe ResultSetTableModel 


/**************************************************************************
 * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/
// Fig. 25.31: DisplayQueryResults.java
// Exibe o conteúdo da tabela Authors no
// banco de dados Books.
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.JTable;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.Box;

public class DisplayQueryResults extends JFrame 
{
   // driver JDBC e URL de banco de dados
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
   static final String DATABASE_URL = "jdbc:mysql://5.77.248.104/imobil";
   static final String USERNAME= "monty";
   static final String PASSWORD= "senha";
   
   // consulta padrão seleciona todas as linhas de tabela authors
   static final String DEFAULT_QUERY = "SELECT * FROM cliente";
   
   private ResultSetTableModel tableModel;
   private JTextArea queryArea;
   
   // cria o ResultSetTableModel e GUI
   public DisplayQueryResults() 
   {   
      super( "Displaying Query Results" );
         
      // cria o ResultSetTableModel e exibe tabela de banco de dados
      try 
      {
         // cria o TableModel para resultados da consulta SELECT * FROM authors
         tableModel = new ResultSetTableModel( JDBC_DRIVER, DATABASE_URL,
            USERNAME, PASSWORD, DEFAULT_QUERY );                         

         // configura JTextArea em que o usuário digita consultas
         queryArea = new JTextArea( DEFAULT_QUERY, 3, 100 );
         queryArea.setWrapStyleWord( true );
         queryArea.setLineWrap( true );
         
         JScrollPane scrollPane = new JScrollPane( queryArea,
            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, 
            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );
         
         // configura o JButton para enviar consulta
         JButton submitButton = new JButton( "Submit Query" );

         // cria o Box para gerenciar o posicionamento da queryArea e do
         // submitButton na GUI
         Box box = Box.createHorizontalBox();
         box.add( scrollPane );
         box.add( submitButton );

         // cria o delegado JTable para tableModel
         JTable resultTable = new JTable( tableModel );
         
         // posiciona os componentes GUI no painel de conteúdo
         add( box, BorderLayout.NORTH );
         add( new JScrollPane( resultTable ), BorderLayout.CENTER );

         // cria evento ouvinte para submitButton
         submitButton.addActionListener( 
         
            new ActionListener() 
            {
               // passa consulta para modelo de tabela
               public void actionPerformed( ActionEvent event )
               {
                  // realiza uma nova consulta
                  try 
                  {
                     tableModel.setQuery( queryArea.getText() );
                  } // fim do try
                  catch ( SQLException sqlException ) 
                  {
                     JOptionPane.showMessageDialog( null, 
                        sqlException.getMessage(), "Database error", 
                        JOptionPane.ERROR_MESSAGE );
                     
                     // tenta recuperar a partir da consulta de usuário inválida
                     // executando consulta padrão
                     try 
                     {
                        tableModel.setQuery( DEFAULT_QUERY );
                        queryArea.setText( DEFAULT_QUERY );
                     } // fim do try
                     catch ( SQLException sqlException2 ) 
                     {
                        JOptionPane.showMessageDialog( null, 
                           sqlException2.getMessage(), "Database error", 
                           JOptionPane.ERROR_MESSAGE );
         
                        // assegura que a conexão de banco de dados está fechada
                        tableModel.disconnectFromDatabase();   
         
                        System.exit( 1 ); // termina o aplicativo
                     } // fim do catch interno
                  } // fim do catch externo
               } // fim do método actionPerformed
            } // fim da classe ActionListener interna 
         ); // fim da chamada para addActionListener

         setSize( 500, 250 ); // configura o tamanho da janela
         setVisible( true ); // exibe a janela 
      } // fim do try
      catch ( ClassNotFoundException classNotFound ) 
      {
         JOptionPane.showMessageDialog( null, 
            "MySQL driver not found", "Driver not found",
            JOptionPane.ERROR_MESSAGE );
         
         System.exit( 1 ); // termina o aplicativo
      } // fim do catch
      catch ( SQLException sqlException ) 
      {
         JOptionPane.showMessageDialog( null, sqlException.getMessage(), 
            "Database error", JOptionPane.ERROR_MESSAGE );
         
         // assegura que a conexão de banco de dados está fechada
         tableModel.disconnectFromDatabase();   
         
         System.exit( 1 );   // termina o aplicativo
      } // fim do catch
      
      // dispõe da janela quando o usuário fecha o aplicativo (isso sobrescreve
      // o padrão de HIDE_ON_CLOSE)
      setDefaultCloseOperation( DISPOSE_ON_CLOSE );
      
      // assegura que a conexão de banco de dados é fechada quando usuário fecha o aplicativo
      addWindowListener(
      
         new WindowAdapter() 
         {
            // desconecta-se do banco de dados e sai quando a janela for fechada
            public void windowClosed( WindowEvent event )              
            {                                                          
               tableModel.disconnectFromDatabase();                    
               System.exit( 0 );                                       
            } // fim do método windowClosed 
         } // fim da classe WindowAdapter interna 
      ); // fim da chamada a addWindowListener
   } // fim do construtor DisplayQueryResults
   
   // executa o aplicativo
   public static void main( String args[] ) 
   {
      new DisplayQueryResults();     
   } // fim de main
} // fim da classe DisplayQueryResults 


/**************************************************************************
 * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and               *
 * Pearson Education, Inc. All Rights Reserved.                           *
 *                                                                        *
 * DISCLAIMER: The authors and publisher of this book have used their     *
 * best efforts in preparing the book. These efforts include the          *
 * development, research, and testing of the theories and programs        *
 * to determine their effectiveness. The authors and publisher make       *
 * no warranty of any kind, expressed or implied, with regard to these    *
 * programs or to the documentation contained in these books. The authors *
 * and publisher shall not be liable in any event for incidental or       *
 * consequential damages in connection with, or arising out of, the       *
 * furnishing, performance, or use of these programs.                     *
 *************************************************************************/
T

Podem me ajudar???

Tenho uma classe DAO, para adicionar, remover, alterar e mostrar os Clientes,

Para exibir todos os clientes eu tenho o seguinte código na classe DAO

public ArrayList getList() throws SQLException

{

PreparedStatement stmt = (PreparedStatement)   this.connection.prepareStatement(select * from contatos);

ResultSet rs = (ResultSet) stmt.executeQuery();

//retorna Array list do tipo Contato
ArrayList contatosArray = new ArrayList();

while (rs.next())

{

/<em>Obtenho os dados do banco através do rs.getString, e atraves do       objeto contato do Tipo Contato eu seto os seus parametros</em>/
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
contato.setTel(rs.getString("tel"));
contato.setBairro(rs.getString("bairro"));
contato.setCidade(rs.getString("cidade"));
						contatosArray.add(contato);
}
	rs.close();
	stmt.close();
	return contatosArray;

Isso é, retorna todos Contatos, a Pergunta é como eu faço para fazer uma consulta de um Contato só, por id ou por nome do cliente

Estou tentando fazer assim:

public Contato getContato(Contato consultacontato) throws SQLException

{

java.sql.PreparedStatement stmt = this.connection.prepareStatement("select id from teste1 where id like ? ");

ResultSet rs = (ResultSet) stmt.executeQuery();
Contato c = new Contato();
		
while (rs.next())
{
c.setNome(rs.getString(consultacontato.getNome()));
//c.setNome(stmt.setString(1, "%"+ nomeContato +"%"));
//c.setNome(rs.getString("Danilo")); 
}
		
	return c;

}

Mas não esta dando certo!!!,

Criado 10 de dezembro de 2006
Ultima resposta 10 de fev. de 2007
Respostas 2
Participantes 3