Jtable apenas mostrado o primeiro ID

[code]import javax.swing.;
import java.awt.
;
import javax.swing.table.;
import java.sql.
;

public class Cadastro extends javax.swing.JFrame {

/** Creates new form Cadastro */
public Cadastro() {
    super("JTable");

final DefaultTableModel modelo = new DefaultTableModel();

// constrói a tabela
JTable tabela = new JTable(modelo);

// Cria duas colunas
modelo.addColumn("ID");
modelo.addColumn("Nome");
modelo.addColumn("Cliente");
modelo.addColumn("Referência");

// exibe os dados da tabela MySQL
try{
   Class.forName("com.mysql.jdbc.Driver");
  Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xpto", "root","1234");

  // procedimentos para obter os dados de uma tabela
  Statement stmt = conn.createStatement();
  String query = "SELECT * FROM logistica_produtos";
  ResultSet rs = stmt.executeQuery(query);

  while(rs.next()){
    int id = rs.getInt("IdProdutos");
    String nome = rs.getString("Nome");
    String cliente = rs.getString("Cliente");
    int referencia = rs.getInt("Referencia");
   modelo.addRow(new Object[]{new Integer(id), nome, cliente, new Integer(referencia)});
  }
   //fim procedimento para obter os dados
  }
  catch(SQLException ex){
       System.out.println("SQLException: " + ex.getMessage());
       System.out.println("SQLState: " + ex.getSQLState());
       System.out.println("VendorError: " + ex.getErrorCode());
  }
  catch(Exception e){
    System.out.println("Problemas ao tentar conectar com o banco de dados");
}

tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));

Container c = getContentPane();
c.setLayout(new FlowLayout());

JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);

setSize(400, 300);
setVisible(true);

}
public static void main(String args[]) {
Cadastro app = new Cadastro();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}[/code]

O código acima descrito serve para eu mostrar a informaçao de uma tabela da base de dados…
só que o problema é que eu só estou conseguindo mostar apenas uma informação, isto é, com este código acima descrito apenas consigo mostrar o primeiro ID. A ajuda que eu pretendia era conseguir listar toda a infomaçao que eu tenho dentro dessa tabela, será que me conseguem ajudar? devo estar a errar em alguma parte, só nao sei qual?

Fala cara, blza?
Veío, tenta isso:

ResultSet rs = stmt.executeQuery(query); rs.first(); while(rs.next()){
Quando eu utilizo JDBC, sempre que eu resgado um ResultSet, eu tenho que deixar o ponteiro na primeira posição.
Para daí ele pegar todos os resultados do ResultSet desde o primeiro registro.

Já vi muita gente aqui não utilizando e me dizendo que funciona. Comigo é bem o contrário :shock:

Abraço.

obrigadao cara, ja consegui…

Agora tava aqui tenfo outro problema com o um login em que o código é o seguinte:

[code]import java.sql.;
import javax.swing.
;
public class Login2 extends javax.swing.JFrame {

/** Creates new form Login2 */
public Login2() {
    if(jTextField1.getText().equals("")
      || jPasswordField1.getText().equals("")){
       JOptionPane.showMessageDialog(null, "Login e Senha Inválido.","oi", JOptionPane.ERROR_MESSAGE);
    }else{
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/xp", "root","1234");
            Statement stm = con.createStatement();
            String SQL = "Select * from usuarios where login = '" + jTextField1.getText()+"';";
            ResultSet rs = stm.executeQuery(SQL);

            while(rs.next()){
                String loginn = rs.getString("login");
                String senhaa = rs.getString("senha");
                String nomee = rs.getString("nome");
                String matriculaa = rs.getString("matricula"); //ctx
                String emaill = rs.getString("email");
                String perfill = rs.getString("perfil");

                if (jTextField1.getText().equals(loginn)&& jPasswordField1.getText().equals(senhaa)){
                    JOptionPane.showMessageDialog(null,"Seja bem vindo: " + nomee, "Oi.simples assim!", JOptionPane.INFORMATION_MESSAGE);
                    jLabel3.setText(nomee);
                    jLabel4.setText(matriculaa);
                    jLabel6.setText(emaill);
                    jLabel5.setText(perfill); // adiministradorou usuário
                }else{
                    JOptionPane.showMessageDialog(null,"Login ou senha inválidos.", "oi. simples assim", JOptionPane.ERROR_MESSAGE);
                    jPasswordField1.setText("");
                }
            }
        }catch (SQLException e){
            e.printStackTrace();// vejamo que erro foi gerado e quem gerou
            JOptionPane.showMessageDialog(null, "erro na conexão, com o banco de dados!","dv", JOptionPane.WARNING_MESSAGE);
        }catch (ClassNotFoundException e){
        e.printStackTrace();
        }finally {
            try{
                con.close();
            }catch(SQLException onConClose){
                //System.out.println("Houve erro no fechamento da conexao");
                JOptionPane.showMessageDialog(null, "Erro na conexao, com o banco de dados!", "oi", JOptionPane.WARNING_MESSAGE);
                onConClose.printStackTrace();
            }
        }//fim do bloco try-catch-finally
     }// else do logine senha vazios
jTextField1.setText("");
jPasswordField1.setText("");

// initComponents();

    initComponents();
}[/code]

o código nao tem erro nenhum, penso eu, mas quando eu faço run file nao aparece nada, isto é, nao aparece a jframe, para eu testar o meu login sabe dizer me pk?
[list]run:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Login2.(Login2.java:22)
at Login2$2.run(Login2.java:202)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 3 seconds)
[/list]
esta é a listagem que apacece quando eu compilo

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Login2.(Login2.java:22)

Aqui diz que tem alguma instância que vc está tentando acessar que está nula.
Posta a linha 22 do seu código, ou bate certinho com a que está aqui no GUJ?

String nomee = rs.getString("nome");

Se for, talvez não esteja conseguindo pegar o nome do banco e setar na variável.

Abraço.

a linha 22 é a seguinte

if(jTextField1.getText().equals("")

efectivamente o jTextField1.getText está a null…

Quais sao as alternativas que eu tenho para deixar de tar o jTextField1.getText a null, terá a ver com a base dados?

Acredito que não.

Pq nessa instrução ele nem está mexendo com a base, ele só está pegando o texto do campo JTextField.
Na classe onde o JTextField é criado, vc deu um new nele??
Fora isso estou sem saber o que é.

Abraço

qual seria a sua ideia pra dar o new onde é que eu inseria o new?

Digo, na classe onde está o JTextField.

JTextField jTextField1 = null; //Ai no construtor da classe, tavles tenha esquecido de dar o new no JTextField jTextField1 = new JTextField();
Mas com certeza vc deve ter feito isso.
Só mencionei pois na facul o povo esquece de instanciar, daí vem o erro NullPointerException.
Fora isso, realmente não sei como ajudar…

Por acaso não tens ai nenhum código que me possas disponibilizar de um login que voce tenha feito, para eu dar uma vista de olhos

Pior que não,

O que eu tenho está em JSP, mas segue o mesmo critério que o seu.
A lógica está certa, mas tem algo passando dispercebido.
Se vc puder passar o código completo. Se for grande passe por MP.
Mas nesta parte que está acontecendo o erro é simplesmente pegar os dados do JTextField e verificar se estão em brando???
Se o JTextField está instanciado, não consigo entender pq diz NullPointerExcpetion.

Bom, se vc puder passar, talvez eu consiga ajudar.

Abraço

[code]import java.sql.;
import javax.swing.
;
public class Login2 extends javax.swing.JFrame {

/** Creates new form Login2 */
public Login2() {

// JTextField jTextField1 = null;
//Ai no construtor da classe, tavles tenha esquecido de dar o new no JTextField
jTextField1 = new JTextField();

    if(jTextField1.getText().equals("")|| jPasswordField1.getText().equals("")){
       JOptionPane.showMessageDialog(null, "Login e Senha Inválido.","oi", JOptionPane.ERROR_MESSAGE);
    }else{
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/xp", "root","1234");
            Statement stm = con.createStatement();
            String SQL = "Select * from usuarios where Login = '" + jTextField1.getText()+"';";
            ResultSet rs = stm.executeQuery(SQL);

            while(rs.next()){
                String loginn = rs.getString("login");
                String senhaa = rs.getString("senha");
                String nomee = rs.getString("nome");
                String matriculaa = rs.getString("matricula"); //ctx
                String emaill = rs.getString("email");
                String perfill = rs.getString("perfil");

                if (jTextField1.getText().equals(loginn)&& jPasswordField1.getText().equals(senhaa)){
                    JOptionPane.showMessageDialog(null,"Seja bem vindo: " + nomee, "Oi!", JOptionPane.INFORMATION_MESSAGE);
                    jLabel3.setText(nomee);
                    jLabel4.setText(matriculaa);
                    jLabel6.setText(emaill);
                    jLabel5.setText(perfill); // adiministradorou usuário
                }else{
                    JOptionPane.showMessageDialog(null,"Login ou senha inválidos.", "oi", JOptionPane.ERROR_MESSAGE);
                    jPasswordField1.setText("");
                }
            }
        }catch (SQLException e){
            e.printStackTrace();// vejamo que erro foi gerado e quem gerou
            JOptionPane.showMessageDialog(null, "erro na conexão, com o banco de dados!","dv", JOptionPane.WARNING_MESSAGE);
        }catch (ClassNotFoundException e){
        e.printStackTrace();
        }finally {
            try{
                con.close();
            }catch(SQLException onConClose){
                //System.out.println("Houve erro no fechamento da conexao");
                JOptionPane.showMessageDialog(null, "Erro na conexao, com o banco de dados!", "oi", JOptionPane.WARNING_MESSAGE);
                onConClose.printStackTrace();
            }
        }//fim do bloco try-catch-finally
     }// else do logine senha vazios

// jTextField1.setText(“Amadeu”);
// jPasswordField1.setText(“1234”);
// initComponents();

    initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
///// que código insiro para que o botao faça a busca na base de dados se encntra o login ou nao???

}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Login2().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPasswordField jPasswordField1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;[/code]

amigo ja consegui passar mais um passo, agora gostava de saber como é que eu faço para quando eu carrego no botao da entrar ele faça uma busca a base de dados, é como eu ainda sou novo nestas andanças do java, se me podesse ajudar…

abraço

Cara vc esta utilizando o Netbenas, não é?

Perceba que na linha 57 do codigo que vc postou aqui no GUJ o seu construtor chama o metodo initComponents(), que instancia todos os componentes, como o amigo,Thiago Luis,tinha falado vc ainda nao instanciou o seu jTextField1. Para solucionar chame o initComponents() na primeira linha do construtor so pra teste.

Att.

Vc pode adicionar uma evento ao seu botao, ai quando vc clicar nele ele lanca este evento. Se não me engano seria o actionPerformance();

Ai dentro do metodo vc pode fazer sua consulta.

Att.

sim exacto seria esse…

Mas agora eu n sei como faço para fazer essa consulta a base de dados, será kme podia ajudar?

Imagine que quando vc clicar neste botão ele vai executar algum metodos. Pronto a ideia é essa.

Neste metodo vc vai fazer sua consulta, da mesma forma que vc estava fazendo dentro do seu contrutor. Certo?

Att.

ve lá se eu percebi a sua ideia…

[code]private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
boolean consulta = true;
try{ //tratamento de erros
Class.forName(“com.mysql.jdbc.Driver”);
Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/sifa”, “root”,“1234”);
Statement stmt = con.createStatement();
ResultSet RS = stmt.executeQuery(“Select * from usuarios where Login = '” + jTextField1.getText()+"’;");
while (RS.next()){
jTextField1.setText(String.valueOf(“login”));
jPasswordField1.setText(RS.getString(“senha”));
consulta=false;
JOptionPane.showMessageDialog(this,“Dados Encontrados”);
}
if(consulta) JOptionPane.showMessageDialog(this,“Dados não encontrados”);
RS.close();
stmt.close();
con.close();
}catch (SQLException e){ //trata os erros
JOptionPane.showMessageDialog(this,“Erro Cmdo SQL”+e.getMessage());
} catch (ClassNotFoundException e){
JOptionPane.showMessageDialog(this, “Drver não encontrado”);

  }

}[/code]

e agora como é k eu faço para atribuir os perfis dos utilizadores

Olha, eu não sei como que está a sua lógica de negócio, mas eu faria assim:

while (RS.next()){ jTextField1.setText(String.valueOf("login")); jPasswordField1.setText(RS.getString("senha")); consulta=false; JOptionPane.showMessageDialog(this,"Dados Encontrados"); setPerfil(RS); }
Daí, no método setPerfil(ResultSet rs), vc verificaria o perfil do cara a faria a atribuição.
Alguma coisa assim.

Abraço

não dá pra explicar melhor…
tipo eu tenho na minha 3 tipos de utilizadores, e agora queria que quando o utilizador A abrisse a a aplicaçao depois de ter feito login abrisse só a parte destinada aquele usuário…
percebe?

então cara voce consegue me ajudar? já tou cansado de olhar pra este código deve ser por isso que nem consigo pensar direito…