Conexão PreparedStatement X Desktop JAVA [RESOLVIDO]

10 respostas
zicky23

Boa tarde pessoal..

como faço para conectar, cadastrar e selecionar dados com essas classes abaixo.

db_usuarios.java

package db;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;  
import java.sql.SQLException;  
  
import javax.swing.JOptionPane;  
    
public class db_usuarios {  
  
   private Connection con;  
   private PreparedStatement pst;  
  
   public void Connect(){  
      try{  
         con = DriverManager.getConnection("jdbc:firebirdsql:192.9.201.254/3050:/caddi/db/db.fdb","SYSDBA","masterkey");  
         System.out.println("Conexao: "+con);
      }  
      catch(Exception e){  
         JOptionPane.showMessageDialog(null,"Não foi possível fazer conexão" + e.getMessage());  
      }  
   }  
   public void Fecha(){  
      try{  
         con.close();  
      }  
      catch(Exception e){  
         JOptionPane.showMessageDialog(null,"ERRO: " + e.getMessage());  
      }  
   }  
   public void inserir(String user,String pass){  
        
      try {  
         Connect();  
         //db_usuarios_get loginUser = new db_usuarios_get();  
         //db_usuarios_get passUser = new db_usuarios_get();  
         String sql = "insert into USUARIOS (LOGIN_USUARIOS, SENHA_USUARIOS) values (?,?)";  
         pst = con.prepareStatement(sql);  
         pst.setString(1, user);  
         pst.setString(2, pass);  
         pst.execute();  
         pst.close();  
           
      } catch (SQLException e) {  
         // TODO Auto-generated catch block  
         JOptionPane.showMessageDialog(null,"ERRO " + e.getMessage());  
      }  
   }  
}

db_usuarios_get.java

package db;

public class db_usuarios_get {  
     
   private String usuario,senha;  
     
   public void Usuario(){  
      usuario = "";  
      senha = "";
   }  
   public void Usuario(String susuario, String ssenha){  
      usuario = susuario;  
      senha = ssenha;  
   }  
   public void setNome(String susuario){  
      usuario = susuario;  
   }  
   public void setSenha(String ssenha){  
      senha = ssenha;  
   }  
   public String getUsuario(){  
      return usuario;  
   }  
   public String getSenha(){  
      return senha;  
   }  
}

novoUser.java

essa é o JDialog que irá abrir para cadastro de usuarios...

[img]http://www.vielmond.net/cadusuarios.png[/img]

Se alguem puder me dar uma dica agradeço

valeu

10 Respostas

SandroSoftwares

ue… vc já tá com quase tudo pronto…

é só colocar dentro do actionperformed do jbutton criarUsuario o código que seta os dados do usuário

agora o seu código está fugindo um pouco dos padrões de projetos… (ex: classe começando com letra minúscula etc…)

uma outra observação, por que você não chama a classe db_usuarios_get simplismente de Usuario?
ficando:

package db;  
  
public class Usuario {    
       
   private String usuario, senha;    
       
   public void Usuario(){    
      usuario = "";    
      senha = "";  
   }    
   public void Usuario(String susuario, String ssenha){    
      usuario = susuario;    
      senha = ssenha;    
   }    
   public void setNome(String susuario){    
      usuario = susuario;    
   }    
   public void setSenha(String ssenha){    
      senha = ssenha;    
   }    
   public String getUsuario(){    
      return usuario;    
   }    
   public String getSenha(){    
      return senha;    
   }    
}

então, como tinha dito, vc simplesmente cria um objeto Usuario.

Usuario usuario = new Usuario(JtextFieldLogin.getText(), JPassword.getPassword()); // cria o objeto já setando login e senha

// cria a conexão
db_usuarios dbusuarios = new db_usuarios();
dbusuarios.Conect();

// cadastra
dbusuarios.inserir(usuario.getUsuario(); usuario.getSenha()); // AGORA PASSAR O METODO AQUI (NESTE CASO) NÃO É A MELHOR OPÇÃO... NA VERDADE É PERDA DE TEMPO UMA VEZ QUE PODERIA TER FEITO DIRETO SEM PRECISAR CRIAR O OBJETO USUARIO... PASSANDO SIMPLESMENTE JtextFieldLogin.getText(), JPassword.getPassword()

//fecha
dbusuarios.Fecha();
zicky23

blz… vou começar a fazer…

valeu!!!

zicky23

qual seria o método correto a fazer aqui? Usar o método Usuário ou fazer direto?

valeu

zicky23

uma dúvida

aqui no ConnUsuarios, como passo os valores do objeto Usuario?

package db;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;  
import java.sql.SQLException;  
  
import javax.swing.JOptionPane;  
    
public class ConnUsuarios {  
  
   private Connection con;  
   private PreparedStatement pst;  
  
   public void Connect(){  
      try{  
         con = DriverManager.getConnection("jdbc:firebirdsql:192.9.201.254/3050:/sistemas/gerenciador_extratos/db/db.fdb","SYSDBA","masterkey");  
         System.out.println("Conexao: "+con);
      }  
      catch(Exception e){  
         JOptionPane.showMessageDialog(null,"Não foi possível fazer conexão" + e.getMessage());  
      }  
   }  
   public void Fecha(){  
      try{  
         con.close();  
      }  
      catch(Exception e){  
         JOptionPane.showMessageDialog(null,"ERRO: " + e.getMessage());  
      }  
   }  
   public void inserir(){  
        
      try {  
         Connect();  
         //db_usuarios_get loginUser = new db_usuarios_get();  
         //db_usuarios_get passUser = new db_usuarios_get();  
         String sql = "insert into USUARIOS (LOGIN_USUARIOS, SENHA_USUARIOS) values (?,?)";  
         pst = con.prepareStatement(sql);  
         pst.setString(1, user);  //aqui como passo os valores para cadastrar?
         pst.setString(2, pass);  //aqui como passo os valores para cadastrar?
         pst.execute();  
         pst.close();  
           
      } catch (SQLException e) {  
         // TODO Auto-generated catch block  
         JOptionPane.showMessageDialog(null,"ERRO " + e.getMessage());  
      }  
   }  
}
zicky23

fiz da seguinte forma....

esse é o ConnUsuarios

package db;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;  
import java.sql.SQLException;  
  
import javax.swing.JOptionPane;  
    
public class ConnUsuarios {  
  
   private Connection con;  
   private PreparedStatement pst;  
  
   public void Connect(){  
      try{  
         Class.forName("org.firebirdsql.jdbc.FBDriver");
         con = DriverManager.getConnection("jdbc:firebirdsql:192.9.201.254/3050:/sistemas/caddi/db/db.fdb","SYSDBA","masterkey");  
         System.out.println("Conexao: "+con);
      }  
      catch(Exception e){  
         JOptionPane.showMessageDialog(null,"Não foi possível fazer conexão" + e.getMessage());  
      }  
   }  
   public void Fecha(){  
      try{  
         con.close();  
      }  
      catch(Exception e){  
         JOptionPane.showMessageDialog(null,"ERRO: " + e.getMessage());  
      }  
   }  
   public void inserir(Usuarios usuario){  
        
      try {  
         Connect();  
         //ConnUsuarios loginUser = new ConnUsuarios();  
         //ConnUsuarios passUser = new ConnUsuarios();  
         String sql = "insert into USUARIOS (LOGIN_USUARIOS, SENHA_USUARIOS) values (?,?)";  
         pst = con.prepareStatement(sql);  
         pst.setString(1, usuario.getUsuario());  
         pst.setString(2, usuario.getSenha());  
         pst.execute();  
         pst.close();  
           
      } catch (SQLException e) {  
         // TODO Auto-generated catch block  
         JOptionPane.showMessageDialog(null,"ERRO " + e.getMessage());  
      }  
   }  
}

no button de cadastro de usuarios ta assim..

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Usuarios usuario = new Usuarios(); 

        // cria a conexão  
        ConnUsuarios dbusuarios = new ConnUsuarios();  
        dbusuarios.Connect();  

        // cadastra  
        dbusuarios.inserir(usuario); 

        //fecha  
        dbusuarios.Fecha();
    }

mas está cadastrando NULL

SandroSoftwares

tá cadastrando null justamente por que vc criou o objeto usuários mas não setou nada…

Usuarios usuario = new Usuarios();

usuario.set(… alguma coisa pra não dar nulll)

zicky23

consegui assim:

usuarios usuario = new Usuarios();
usuario.Usuarios(FieldLogin.getText(),FieldPass.getText()); //embora aqui no FieldPass esteja aparecendo como "getText" depreciado. Mas se uso o getPassword da erro pq ele mostra um 'char[]' tem como resolver?

valeu

SandroSoftwares

vc pode fazer assim:

String senha = new String(jPassword1.getPassword());

usuarios usuario = new Usuarios();  
usuario.Usuarios(FieldLogin.getText(),senha);

agora deste jeito a senha fica visível, é bom criptografa-la.

zicky23

deu certo....\o

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Usuarios usuario = new Usuarios(); // cria o objeto já setando login e senha
        String senha = new String(FieldPass.getPassword());  
        usuario.Usuarios(FieldNome.getText(), FieldLogin.getText(), senha, ComboNivel.getSelectedIndex());
        // cria a conexão  
        ConnUsuarios dbusuarios = new ConnUsuarios();  
        dbusuarios.Connect();  

        // cadastra  
        dbusuarios.inserir(usuario);  

        //fecha  
        dbusuarios.Fecha();
    }

valeu!!!

zicky23

tem como me dar uma maozinha nesse: http://www.guj.com.br/java/288819-mostrar-dados-na-jtable-com-preparedstatement

Criado 1 de dezembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 10
Participantes 2