Conexão PreparedStatement X Desktop JAVA [RESOLVIDO]

Boa tarde pessoal…

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

db_usuarios.java

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

}
} [/code]

db_usuarios_get.java

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

novoUser.java

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

Se alguem puder me dar uma dica agradeço

valeu

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

blz… vou começar a fazer…

valeu!!!

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

valeu

uma dúvida

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

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

}
} [/code]

fiz da seguinte forma…

esse é o ConnUsuarios

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

}
} [/code]

no button de cadastro de usuarios ta assim…

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

mas está cadastrando NULL

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)

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

vc pode fazer assim:

[code]String senha = new String(jPassword1.getPassword());

usuarios usuario = new Usuarios();
usuario.Usuarios(FieldLogin.getText(),senha);[/code]

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

deu certo…\o

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

valeu!!!

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