Java + mysql - problema com a manipulaÇÃo dos dados

18 respostas
tezolin

Ae Galera.....

To com um grande problema...por mais que eu te nha procurado..não consegui achar nd relacionado...

Criei uma classe de Conexão ...

package br.com.tezolin.conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JOptionPane;

public class Conexao {
	private static Connection minhaConexao = null;
	//Estabelece a conexao
	public static Connection getConnection()
	{
		try{
			String user = "root";
			String password = "";
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost/biblioteca";
			minhaConexao = DriverManager.getConnection(url, user, password);
			
			JOptionPane.showMessageDialog(null, "Conexao realizada com sucesso","Conexão ao banco de dados",JOptionPane.PLAIN_MESSAGE);
			}
		catch(ClassNotFoundException e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "ClassNotFoundException","Conexão ao banco de dados",JOptionPane.PLAIN_MESSAGE);
		}
		catch(SQLException e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "SQLException","Conexão ao banco de dados",JOptionPane.PLAIN_MESSAGE);
		}
		return minhaConexao;		
	}
}

Ele conecta ao banco ..mais naum consrgui achar nada relacionado a como chamar os dado s do meu banco para os jTextFields...
alguem poderia me dar uma ajuda...

Sou iniciante em java....

mto grato desde ja galera!!!!!

18 Respostas

paulo.ubuntu

esse tutorial é ótimo
http://www.inf.furb.br/~jomi/java/pdf/jdbc.pdf

boa sorte ae

tezolin

paulo.ubuntu:
esse tutorial é ótimo
http://www.inf.furb.br/~jomi/java/pdf/jdbc.pdf

boa sorte ae

Brigadaum amigo…

ja peguei o mateiral aki e vo começa a moe ehhe

é uma grande mudança trabalha com JPA?
a nivel de aprendizado?

paulo.ubuntu

Caraaa… creio que JPA é uma curva bem grande de aprendizado no momento pra voce

não utilizo muito JPA…uso Hibernate…:slight_smile:

www.hibernate.org

mas se voce quiser te passo outro tutorial de JPA eu te passo o link ok

Abraços amigo

Boa Sorte ae

tezolin

paulo.ubuntu:
Caraaa… creio que JPA é uma curva bem grande de aprendizado no momento pra voce

não utilizo muito JPA…uso Hibernate…:slight_smile:

www.hibernate.org

mas se voce quiser te passo outro tutorial de JPA eu te passo o link ok

Abraços amigo

Boa Sorte ae

Hum…pensei que JPA e Hibernate fosse a mesma coias!!! …

se puder mandar as apostilas fico agradecido…!!!

Email: [email removido]

reformulando agora a pergunta…
" é uma grande mudança trabalha com Hibernate? A nível de aprendizado?"

Brigadaum …
Abraco

paulo.ubuntu

Olá…
heheheh
Pois bem é como lhe disse é uma grande curva de aprendizado…tanto JPA (java Persistence API) como o Hibenate… porem são ferramentas incriveis…
as duas dispensam o uso de SQL ( as vezes é necessario criar criterias pra obter um resultado mais esperado)
e não dependem de Banco de dados…ou seja…ela traduzem o q voce quer pra cada banco de dados…mediante a sua configuração.

Estou lhe Passando os tutorias OK?

Abraços

JPA
http://www.marcomendes.com/ArquivosBlog/AloMundoJPA.pdf
http://www.devmedia.com.br/articles/viewcomp.asp?comp=4590
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/persistenceapi/

Hibernate
http://www.guj.com.br/posts/list/25776.java
http://www.javafree.org/news/view.jf?idNew=3372
http://www.roseindia.net/hibernate/introduction.shtml
http://www.livramento.yu.com.br/Hibernate.html
http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html

Abraços

tezolin

paulo.ubuntu:
Olá…
heheheh
Pois bem é como lhe disse é uma grande curva de aprendizado…tanto JPA (java Persistence API) como o Hibenate… porem são ferramentas incriveis…
as duas dispensam o uso de SQL ( as vezes é necessario criar criterias pra obter um resultado mais esperado)
e não dependem de Banco de dados…ou seja…ela traduzem o q voce quer pra cada banco de dados…mediante a sua configuração.

Estou lhe Passando os tutorias OK?

Abraços

JPA
http://www.marcomendes.com/ArquivosBlog/AloMundoJPA.pdf
http://www.devmedia.com.br/articles/viewcomp.asp?comp=4590
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/persistenceapi/

Hibernate
http://www.guj.com.br/posts/list/25776.java
http://www.javafree.org/news/view.jf?idNew=3372
http://www.roseindia.net/hibernate/introduction.shtml
http://www.livramento.yu.com.br/Hibernate.html
http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html

Abraços

MUITO OBRIGADO!!!

VAI AJUDA MTO MESMO NO QUE EU TO FAZENDO

BRIGADAUM MESMO…

FLW AMIGO , ABRACO

wamarra

Cara, basta usar o PreparedStatement ou Statement para a manipulação do banco de dados:

ou seja:
public class Conexao {   
    private static Connection minhaConexao = null;   
    //Estabelece a conexao   
    public static Connection getConnection() {   
        try{   
            String user = "root";   
            String password = "";   
            Class.forName("com.mysql.jdbc.Driver");   
            String url = "jdbc:mysql://localhost:3306/biblioteca";   
            minhaConexao = DriverManager.getConnection(url, user, password); 
            PreparedStatement ps = minhaConexao.prepareStatement("SELECT suaColuna FROM suaTabela WHERE suaColuna = ? ");     
  
            ps.setString(1, SeuTextField.getText());  //Caso esteje manipulando uma coluna da tabela 
            
            ResultSet rs = ps.executeQuery();

            if (rs.next()){
                   seuTextField.setText(rs.setString("suaColuna"));
            }

           .
           .
           .

           }
     }
}

Espero ter ajudado

T+

tezolin
Wesley Marra:
Cara, basta usar o PreparedStatement ou Statement para a manipulação do banco de dados: ou seja:
public class Conexao {   
    private static Connection minhaConexao = null;   
    //Estabelece a conexao   
    public static Connection getConnection() {   
        try{   
            String user = "root";   
            String password = "";   
            Class.forName("com.mysql.jdbc.Driver");   
            String url = "jdbc:mysql://localhost:3306/biblioteca";   
            minhaConexao = DriverManager.getConnection(url, user, password); 
            PreparedStatement ps = minhaConexao.prepareStatement("SELECT suaColuna FROM suaTabela WHERE suaColuna = ? ");     
  
            ps.setString(1, SeuTextField.getText());  //Caso esteje manipulando uma coluna da tabela 
            
            ResultSet rs = ps.executeQuery();

            if (rs.next()){
                   seuTextField.setText(rs.setString("suaColuna"));
            }

           .
           .
           .

           }
     }
}

Espero ter ajudado

T+

Ajudou tbm amigo....Mto Obrigado..

tipo..para ficar melhor eu posso criar uma classe apenas para a conexão ao bancoi de dados neh.. e depois manipular os dados com esses eskema que vc citou neh
#  PreparedStatement ps = minhaConexao.prepareStatement("SELECT suaColuna FROM suaTabela WHERE suaColuna = ? ");       
#     
#             ps.setString(1, SeuTextField.getText());  //Caso esteje manipulando uma coluna da tabela   
#               
#             ResultSet rs = ps.executeQuery();  
#   
#             if (rs.next()){  
#                    seuTextField.setText(rs.setString("suaColuna"));  
#             }
wamarra

É isso ae!

Fica melhor ainda.

Boa sorte na sua aplicação.

até!

tezolin

Wesley Marra:
É isso ae!

Fica melhor ainda.

Boa sorte na sua aplicação.

até!

Olha o que eu montei mais tah com erro mesmo assim…
Se puder por gentileza da uma olhadinha

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;


public class NovoJFrame extends JFrame {

	 JLabel jLabel1;
	 static JTextField jTFNomeAssociado;
	 ResultSet rs;
    
	 public static void main(String args[]) 
	    {
	        java.awt.EventQueue.invokeLater(new Runnable() {
	            public void run() {
	                new NovoJFrame().setVisible(true);
	            }
	        });
	    }
	 
	 //------------------CONTRUTOR----------------------
	 public NovoJFrame() {
		 
        jTFNomeAssociado = new JTextField();
        jLabel1 = new JLabel();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Nome Associado: ");

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTFNomeAssociado, GroupLayout.PREFERRED_SIZE, 156, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTFNomeAssociado, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
        
        
        
        
        //---------------------COMEÇA A CONEXÂO--------------------
        
        
           
            public  static Connection minhaConexao = null;   
            //Estabelece a conexao   
            public static Connection getConnection() {   
                try{   
                    String user = "root";   
                    String password = "";   
                    Class.forName("com.mysql.jdbc.Driver");   
                    String url = "jdbc:mysql://localhost:3306/biblioteca";   
                    minhaConexao = DriverManager.getConnection(url, user, password); 
                    PreparedStatement ps = minhaConexao.prepareStatement("SELECT Nome_Associado FROM associados WHERE Nome_Associado = 'Rodrigo'");     
          
                    ps.setString(1, jTFNomeAssociado.getText());  //Caso esteje manipulando uma coluna da tabela 
                    
                    ResultSet rs = ps.executeQuery();

                    if (rs.next()){
                    	jTFNomeAssociado.setText(rs.setString("suaColuna"));
                    }
                    
                   

                   }
                	catch(SQLException erro)
                	{
                	}
             }
        }
        
        
        //-----------------------FIM DA CONEXÂO--------------------
     
    }                        
 
}

Segue abaixo o Sql dele

/*
MySQL Data Transfer
Source Host: localhost
Source Database: biblioteca
Target Host: localhost
Target Database: biblioteca
Date: 13/11/2007 16:18:33
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for associados
-- ----------------------------
CREATE TABLE `associados` (
  `Cod_Associado` int(4) NOT NULL auto_increment,
  `Nome_Associado` varchar(50) NOT NULL,
  `Tipo_Associado` varchar(15) NOT NULL,
  `Num_Punicoes` int(1) NOT NULL,
  PRIMARY KEY  (`Cod_Associado`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Table structure for bibliografias
-- ----------------------------
CREATE TABLE `bibliografias` (
  `Cod_Referencia` int(11) NOT NULL auto_increment,
  `Tipo` varchar(15) default NULL,
  `Autor` varchar(20) default NULL,
  `Nome_Revista` varchar(20) default NULL,
  `Loc_Fisica` varchar(15) default NULL,
  `Editora` varchar(15) default NULL,
  `Assunto` varchar(15) default NULL,
  PRIMARY KEY  (`Cod_Referencia`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Table structure for exemplares
-- ----------------------------
CREATE TABLE `exemplares` (
  `Cod_Exemplar` int(4) NOT NULL auto_increment,
  `Dt_Aquisicao` datetime NOT NULL,
  `Cod_Referencia` int(11) NOT NULL,
  PRIMARY KEY  (`Cod_Exemplar`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `associados` VALUES ('1', 'Rodrigo', 'Aluno', '0');
tezolin

Mto Obrigado desde ja !!!
Abraço

wamarra
No preparedStatement fica desse jeito mesmo:
PreparedStatement ps = minhaConexao.prepareStatement("SELECT Nome_Associado FROM associados WHERE Nome_Associado = ? ");
sendo que o " ? " será o que o usuário irá digitar no JTextField que fará a comparação ao banco de dados. E no if ficaria assim:
if (rs.next()){   
         jTFNomeAssociado.setText(rs.setString("Nome_Associado")); 
/**
O jTFNomeAssociado teria que ser um JTextField de destino e não o mesmo  JTextField de comparação com o banco, ou seja, terá que ter 2 JTextField: 1º para o usuário digitar o conteúdo que será comparado ao banco de dados e o 2º para receber os dados do banco*/
  
}

Caso dê errado post o erro pra que possa tentar identifica-lo.

abraços

wamarra
Caso queira somente buscar o conteudo do banco de dados é melhor com Statement que ficaria o seguinte:
try{  
        String user = "root";     
        String password = "";     
        Class.forName("com.mysql.jdbc.Driver");     
        String url = "jdbc:mysql://localhost:3306/biblioteca";     
        minhaConexao = DriverManager.getConnection(url, user, password);
        Statement stm = minhaConexao.createStatement();   
        ResultSet rs = stm.executeQuery("SELECT Nome_Associado FROM associados WHERE Nome_Associado = 'Rodrigo'");     
                         
        if (rs.next()){                 
                jTFNomeAssociado.setText(rs.setString("Nome_Associado"));
        }
}
e o código continua tratando os catch
tezolin
Wesley Marra:
Caso queira somente buscar o conteudo do banco de dados é melhor com Statement que ficaria o seguinte:
try{  
        String user = "root";     
        String password = "";     
        Class.forName("com.mysql.jdbc.Driver");     
        String url = "jdbc:mysql://localhost:3306/biblioteca";     
        minhaConexao = DriverManager.getConnection(url, user, password);
        Statement stm = minhaConexao.createStatement();   
        ResultSet rs = stm.executeQuery("SELECT Nome_Associado FROM associados WHERE Nome_Associado = 'Rodrigo'");     
                         
        if (rs.next()){                 
                jTFNomeAssociado.setText(rs.setString("Nome_Associado"));
        }
}
e o código continua tratando os catch

Vou testar aqui mais tarde envio a resposta...
Brigadaum Amigo...abraço!!!

tezolin

Wesley Marra:
No preparedStatement fica desse jeito mesmo:

Caso dê errado post o erro pra que possa tentar identifica-lo.

Então …montei uma classe aki e deu certo…
Da uma Olhadinha

import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class TabelaCompleta extends JFrame
{
   Connection conexao;
   JTable tab;
   
   public static void main(String args[])
  {
   JFrame Janela = new TabelaCompleta();
   Janela.show();
   WindowListener x = new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
     {
      System.exit(0);
     }
    };
   Janela.addWindowListener(x);
  }
  
  public TabelaCompleta() 
   {   
   setTitle( "Tabela de Associados" );
   setSize(600,300);
  
   
   String url = "jdbc:mysql://localhost/biblioteca";
   try 
     {
	   Class.forName("com.mysql.jdbc.Driver");
     conexao = DriverManager.getConnection(url, "root", "" );
     } 
   catch (ClassNotFoundException cne) 
     {
      System.out.println("Erro ao carregar o driver JDBC/ODBC");
     }
   catch (SQLException sqlne ) 
     {
     System.out.println("Problemas na Conexão");
     }
    buscaTabela();
   }

   private void buscaTabela()
   {
      Statement st;
      ResultSet res;
      try 
       {
	   Vector cabecalho = new Vector();
       Vector linhas = new Vector();
       st = conexao.createStatement();
       res = st.executeQuery("SELECT * FROM associados where Nome_associado='Rodrigo'");
	   res.next();  
       // busca os cabeçalhos
       ResultSetMetaData rsmd = res.getMetaData();
       for ( int i = 1; i <= rsmd.getColumnCount(); ++i ) 
          cabecalho.addElement( rsmd.getColumnName( i ) );
       // busca dados das linhas
       do 
        {
        linhas.addElement( proximaLinha( res, rsmd ) ); 
        } 
       while ( res.next() );       
 
       // Mostra a tabela com cabeçalhos e registros
       tab = new JTable( linhas, cabecalho );
       JScrollPane scroller = new JScrollPane( tab );
       getContentPane().add(scroller, BorderLayout.CENTER);
       validate();
       st.close();
       }
      catch (SQLException sqlex) 
        { }
   } 

   private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd )
   {
    Vector LinhaAtual = new Vector();
    try
    {
    for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
     switch( rsmd.getColumnType(i)) 
     {
     case Types.VARCHAR:
      LinhaAtual.addElement(rs.getString(i));break;
     case Types.TIMESTAMP:
      LinhaAtual.addElement(rs.getDate(i));break;
     }
    }
    catch(SQLException e) {}
    return LinhaAtual;   
   }
}

Obs: Usei alguns esqueiminhas do do While no livro do Sergio Furgeri

Mais nesta classe aki que eu tentei xma o banco e naum consegui deu um erro no SQLException

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;


public class NovoJFrame extends JFrame {

	 JLabel jLabel1;
	 static JTextField jTFNomeAssociado;
	 ResultSet rs;
    
	 public static void main(String args[]) 
	    {
	        java.awt.EventQueue.invokeLater(new Runnable() {
	            public void run() {
	                new NovoJFrame().setVisible(true);
	            }
	        });
	    }
	 
	 //------------------CONTRUTOR----------------------
	 public NovoJFrame() {
		 
        jTFNomeAssociado = new JTextField();
        jLabel1 = new JLabel();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Nome Associado: ");

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTFNomeAssociado, GroupLayout.PREFERRED_SIZE, 156, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTFNomeAssociado, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
        
        
        
        
        //---------------------COMEÇA A CONEXÂO--------------------
        
    	
		
        try 
         {
        	
        String user = "root";
    	String password = "";
    	String url = "jdbc:mysql://localhost/biblioteca";
        Class.forName("com.mysql.jdbc.Driver");
        Connection MinhaConexao = DriverManager.getConnection(url);
        Statement MeuState = MinhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
       	ResultSet.CONCUR_READ_ONLY);
        rs = MeuState.executeQuery("SELECT * FROM associados"); 
        rs.first();
        atualizaCampos();
        } 
        catch(ClassNotFoundException ex)
        {
        System.out.println("Driver JDBC-ODBC não encontrado!");
        }
        catch(SQLException ex)
        {
         System.out.println("Problemas na conexao com a fonte de dados");
         }  
	 }          

                   
                	
             
        
        
        
        //-----------------------FIM DA CONEXÂO--------------------
        
        private void atualizaCampos() {
        {
        try
         {
        	jTFNomeAssociado.setText(rs.getString("Ficodigo"));
         
         }
        catch(SQLException ex)
         {  }
        } 
        
        
        
        
    }

	                     
        
}

Ja abusando um pouco…

tipo na primeira classe se por acaso eu fosse usar ela (vamos dizer meio q “profissionalmente”), eu teria que dividir em mais classes e criar as orienntações neh…como ficaria +/-…pq tentei cria uma classe so pra conexão e depois eu m ebaralhava td na hr da manipulação

Desculpa a enxeção ae de vcs…e Mto obrigado desde ja…

Um Abração!!!

wamarra

cara me desculpe eu tinha errado na linha:

jTFNomeAssociado.setText(rs.setString("Nome_Associado"));

Troque por:

jTFNomeAssociado.setText(rs.getString("Nome_Associado"));`

Vlw!?

wamarra

Bom, com relação a classe que não está obtendo a conexão,
tente trocar a linha:

Connection MinhaConexao = DriverManager.getConnection(url);

por:

Connection MinhaConexao = DriverManager.getConnection(url, user, password);

e:

rs.first(); atualizaCampos();
Por:

if (rs.next()){ atualizaCampos(); }

tezolin

Wesley Marra:

Valew cara deu certo aki…
Consegui puxa o banco ehhehe
brigadaum a força ae…
abraço

Criado 12 de novembro de 2007
Ultima resposta 15 de nov. de 2007
Respostas 18
Participantes 3