Problemas para capturar e mostrar dados do BD SQLServer no netbeans

Tenho uma aplicação em SWING que tenho que conectar com o banco de dados.

depois de MUITO apanhar, consegui fazer a conexão,
mas agora não consigo pegar os dados do banco e jogar na tela SWING

                                                                                                este erro ocorre:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Main.Util.bdTentativa.jButton1ActionPerformed(bdTentativa.java:108)
	at Main.Util.bdTentativa.access$200(bdTentativa.java:16)
	at Main.Util.bdTentativa$3.actionPerformed(bdTentativa.java:73)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
                                                                                                                     e este é o código:
public class bdTentativa extends javax.swing.JFrame {

     public static Connection con;
    public static CallableStatement cst;
   public static java.sql.Statement st;
    public static ResultSet r;
    
  
    public bdTentativa() {
        initComponents();
    }

    private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            
            con = DriverManager.getConnection("jdbc:odbc:BD_GYMControl");
            
            

        }catch(Exception e){}

// esta conexão não esta dando erro, foi depurada com sucesso, porem a parte abaixo começam os erros

    }                                    

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      String wrkRazaowSocial = null,wrkNomeFantasia=null;
        
        try {
           st = con.createStatement();
           r = st.executeQuery("Select Razao_Social, Nome_Fantasia From Fornecedor");
           while(r.next())
                   {
                       wrkRazaowSocial = r.getString("Razao_Social");
                       wrkNomeFantasia = r.getString("Nome_Fantasia");
                   }
           st.close();
           r.close();
           con.close();
      } catch (SQLException ex) {
            Logger.getLogger(Cad_Forn.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        jTextField1.setText( wrkRazaowSocial);
        jTextField2.setText(  wrkNomeFantasia);

Alguém pode me ajudar? estou procurando a muito tempo esse código na net e não consigo achar!

Obrigado

Devia ter postando antes, já fiz um post sobre SQLServer que também tinha apanhado muito para resolver…
Usei a lib jtds-1.2.6

Fiz uma classe de conexao:

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

 public class Database {
            public Connection getConnection() {
                        Connection conn = null;
                        String driver = "net.sourceforge.jtds.jdbc.Driver";
                        String url = "jdbc:jtds:sqlserver://localhost:1433/seuDatabase;user=sa;password=sa";

                        try {
                                    Class.forName(driver);
                                    conn = DriverManager.getConnection(url);
                        } catch (ClassNotFoundException ex) {
                                    System.out.Println("Driver não encontrado!");
                         } catch (SQLException ex) {
                                    System.out.Println("Erro na conexão!" + ex);
                        }
                        return conn;
            }
 }

Nessa parte do seu codigo verifique se o nome do campo na tabela está perfeitamente igual, com maiusculo e minusculo.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
      String wrkRazaowSocial = null,wrkNomeFantasia=null;   
           
        try {   
           st = con.createStatement();   
           r = st.executeQuery("Select Razao_Social, Nome_Fantasia From Fornecedor");   
           while(r.next())   
                   {   
                       wrkRazaowSocial = r.getString("Razao_Social");   
                       wrkNomeFantasia = r.getString("Nome_Fantasia");   
                   }   
           st.close();   
           r.close();   
           con.close();   
      } catch (SQLException ex) {   
            Logger.getLogger(Cad_Forn.class.getName()).log(Level.SEVERE, null, ex);   
        }   
           
        jTextField1.setText( wrkRazaowSocial);   
        jTextField2.setText(  wrkNomeFantasia);  

Eu faria da seguinte forma:

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

      Database database = new Database();
      String wrkRazaowSocial = null,wrkNomeFantasia=null;   
      String sql = "select Razao_Social, Nome_Fantasia From Fornecedor";
        try {   
           ResultSet r = database.getConnection.createStatement().executeQuery(sql);   
           while(r.next())   
                   {   
                       wrkRazaowSocial = r.getString("Razao_Social");   
                       wrkNomeFantasia = r.getString("Nome_Fantasia");   
                   }   
           r.close();   
      } catch (SQLException ex) {   
            Logger.getLogger(Cad_Forn.class.getName()).log(Level.SEVERE, null, ex);   
        }   
           
        jTextField1.setText( wrkRazaowSocial);   
        jTextField2.setText(  wrkNomeFantasia);  

[quote=Edgard.Pavanelli]
Tenho uma aplicação em SWING que tenho que conectar com o banco de dados.

depois de MUITO apanhar, consegui fazer a conexão,
mas agora não consigo pegar os dados do banco e jogar na tela SWING

                                                                                                este erro ocorre:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at Main.Util.bdTentativa.jButton1ActionPerformed(bdTentativa.java:108)
	at Main.Util.bdTentativa.access$200(bdTentativa.java:16)
	at Main.Util.bdTentativa$3.actionPerformed(bdTentativa.java:73)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
                                                                                                                     e este é o código:
public class bdTentativa extends javax.swing.JFrame {

     public static Connection con;
    public static CallableStatement cst;
   public static java.sql.Statement st;
    public static ResultSet r;
    
  
    public bdTentativa() {
        initComponents();
    }

    private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            
            con = DriverManager.getConnection("jdbc:odbc:BD_GYMControl");
            
            

        }catch(Exception e){}

// esta conexão não esta dando erro, foi depurada com sucesso, porem a parte abaixo começam os erros

    }                                    

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
      String wrkRazaowSocial = null,wrkNomeFantasia=null;
        
        try {
           st = con.createStatement();
           r = st.executeQuery("Select Razao_Social, Nome_Fantasia From Fornecedor");
           while(r.next())
                   {
                       wrkRazaowSocial = r.getString("Razao_Social");
                       wrkNomeFantasia = r.getString("Nome_Fantasia");
                   }
           st.close();
           r.close();
           con.close();
      } catch (SQLException ex) {
            Logger.getLogger(Cad_Forn.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        jTextField1.setText( wrkRazaowSocial);
        jTextField2.setText(  wrkNomeFantasia);

Alguém pode me ajudar? estou procurando a muito tempo esse código na net e não consigo achar!

Obrigado[/quote]

Mas o seguinte!!!
Da forma que escreveu ele sempre vai retornar um valor só!
Coloque os valores em uma lista, ou filtre a query da forma que retorne somente 1.

Obrigado pela resposta therodrigoagostin,

Esse JAR que vc me passou eu ja tentei e não consegui!
não sei se é problema na porta, mas não consegui de jeito nenhum!

então achei um tutorial que o cara faz uma conexão pelo ODBCAD32 do windows!
e esse deu certo consegui a conexão!

porem na hora de jogar na tela os dados, independente da QUERY passar um valor ou mais,
esta dando aqueles erros!

e não estou conseguindo relacionar os erros a qual linha que ta dando problema

será que tem a ver com o try cacth? que estou fazendo errado?

Seguinte entao Edgard,
troca o catch (Exception e) pra catch (SQLException e)

manda imprimir o erro e manda pra ca!

therodrigoagostin, estou tentando com o JTDS 1.2.6!

ta dando DRIVER NÃO ENCONTRADO, se sabe que pode ser?

eu importei o JAR pro projeto!

ok vou tentar e te mando os erros, ja

ah realmente therodrigoagostin, coloquei o codigo que estava fazendo para conectar o BD anteriormente

este:

try{  
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
              
            con = DriverManager.getConnection("jdbc:odbc:BD_GYMControl");  
              
              
  
        }catch(Exception e){} 

dentro do TRY CATCH que voce fez


 try {  
                                    
                        } catch (ClassNotFoundException ex) {  
                                    System.out.Println("Driver não encontrado!");  
                         } catch (SQLException ex) {  
                                    System.out.Println("Erro na conexão!" + ex);  
                        }  

ficando desta forma:



try {  

 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
              
            con = DriverManager.getConnection("jdbc:odbc:BD_GYMControl"); 
                                    
                        } catch (ClassNotFoundException ex) {  
                                    System.out.Println("Driver não encontrado!");  
                         } catch (SQLException ex) {  
                                    System.out.Println("Erro na conexão!" + ex);  
                        }  

e esta dando erro de LOGIN!

e agora qual tentar usar?

Cada um da um erro, o JTDS da

driver não encontrado

e o da conexão ODBCAD32 da como

Erro na conexão!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ‘’

o que posso fazer?

Você nao esta passando o usuário nem a senha do seu banco de dados!

"Você nao esta passando o usuário nem a senha do seu banco de dados! "

mas nesse código eu faço a conexão pelo ODBCAD32!

e la é colocado o login e a senha do bd

fiz com esse tutorial

http://www.youtube.com/watch?v=f1nbCcpriWU

veja a partir dos 3:00 min

Precisa passar o host, a porta, o usuario e a senha para conectar ao bando de dados.

Mudei abaixo, na linha onde voce define isso (DriverManager):

try {    
  
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    
                
            con = DriverManager.getConnection("jdbc:odbc://localhost:3306/BD_GYMControl", "USUARIO", "SENHA");   
                                      
                        } catch (ClassNotFoundException ex) {    
                                    System.out.Println("Driver não encontrado!");    
                         } catch (SQLException ex) {    
                                    System.out.Println("Erro na conexão!" + ex);    
                        }

Precisa passar o usuario e senha do banco, o mesmo que você usa pra conectar no banco, como o rof20004 falou
porém, a porta de comunicação que ele passou é do mysql

no jtds vc passa assim

String url = "jdbc:jtds:sqlserver://localhost:1433/seuDatabase;user=sa;password=sa";

e a porta de comunicação é a 1433

Fiz em um tutorial como usar o jdts : http://coisasderodrigo.wordpress.com/2012/09/08/programacao-java-sql-server-2008-express/
configurando o sqlserver, pode ser que ajude

mas pode ser que passe o DriveManager assim:

con = DriverManager.getConnection("jdbc:odbc://localhost:1433/BD_GYMControl", "USUARIO", "SENHA"); 

ou como o meu

 DriverManager.getConnection("jdbc:odbc://localhost:1433/seuDatabase;user=sa;password=sa");

[quote=rof20004]Precisa passar o host, a porta, o usuario e a senha para conectar ao bando de dados.

Mudei abaixo, na linha onde voce define isso (DriverManager):

[code]
try {

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

        con = DriverManager.getConnection("jdbc:odbc://localhost:3306/BD_GYMControl", "USUARIO", "SENHA");   
                                  
                    } catch (ClassNotFoundException ex) {    
                                System.out.Println("Driver não encontrado!");    
                     } catch (SQLException ex) {    
                                System.out.Println("Erro na conexão!" + ex);    
                    }

[/code][/quote]

Desculpem, nao me atentei pro Banco que ele ta usando ‘-’ hehehe… sorry!

então pessoal, desse jeito que vcs mostraram pra mim
ta dando como Driver não encontrado!

OI pessoal, não consegui realmente conectar o JAVA no SQLServer, como tinha pressa pois a data do meu tcc estava chegando acabei mudando pro mySQL!

mas não gostei muito, pois tenho um certo “apreço” pelo SQLServer, acho que por ter o maneger, a parte visual, num ser naquela telinha de DOS que eu odeio! enfim eu gosto do Server
e gostaria de conseguir conectar minhas aplicações nele!

eu encontrei 2 drivers principais, o JTDS e o driver da MICROSOFT!

os 2 eu testei e nos dois não CHEGAVA a conectar, data DRIVER NÂO ENCONTRADO,
como se o JAR não tivesse na aplicação, sendo que estava sim!

cheguei ate a jogar o jar la nas bibliotecas do JAVA mas não puxou!

alguem sabe o que pode ser!??
obrigado!