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

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 …

[code]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;		
}

}
[/code]

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!!!

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

boa sorte ae

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

boa sorte ae[/quote]

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?

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

[quote=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[/quote]

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

se puder mandar as apostilas fico agradecido…!!!

Email: rodrigo.tezolin@gmail.com

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

Brigadaum …
Abraco

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

[quote=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
[/quote]

MUITO OBRIGADO!!!

VAI AJUDA MTO MESMO NO QUE EU TO FAZENDO

BRIGADAUM MESMO…

FLW AMIGO , ABRACO

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

ou seja:

[code]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"));
        }

       .
       .
       .

       }
 }

}[/code]

Espero ter ajudado

T+

[quote=Wesley Marra]Cara, basta usar o PreparedStatement ou Statement para a manipulação do banco de dados:

ou seja:

[code]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"));
        }

       .
       .
       .

       }
 }

}[/code]

Espero ter ajudado

T+
[/quote]

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"));  
#             }  

É isso ae!

Fica melhor ainda.

Boa sorte na sua aplicação.

até!

[quote=Wesley Marra]É isso ae!

Fica melhor ainda.

Boa sorte na sua aplicação.

até![/quote]

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');

Mto Obrigado desde ja !!!
Abraço

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:

[code]
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*/

}[/code]

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

abraços

Caso queira somente buscar o conteudo do banco de dados é melhor com Statement que ficaria o seguinte:

[code]
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"));
    }

}[/code]
e o código continua tratando os catch

[quote=Wesley Marra]Caso queira somente buscar o conteudo do banco de dados é melhor com Statement que ficaria o seguinte:

[code]
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"));
    }

}[/code]
e o código continua tratando os catch
[/quote]

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

[quote=Wesley Marra]No preparedStatement fica desse jeito mesmo:

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

[/quote]

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!!!

cara me desculpe eu tinha errado na linha:

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

Troque por:

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

Vlw!?

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(); }

[quote=Wesley Marra][/quote]

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