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
packagedb;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjavax.swing.JOptionPane;publicclassdb_usuarios{privateConnectioncon;privatePreparedStatementpst;publicvoidConnect(){try{con=DriverManager.getConnection("jdbc:firebirdsql:192.9.201.254/3050:/caddi/db/db.fdb","SYSDBA","masterkey");System.out.println("Conexao: "+con);}catch(Exceptione){JOptionPane.showMessageDialog(null,"Não foi possível fazer conexão"+e.getMessage());}}publicvoidFecha(){try{con.close();}catch(Exceptione){JOptionPane.showMessageDialog(null,"ERRO: "+e.getMessage());}}publicvoidinserir(Stringuser,Stringpass){try{Connect();//db_usuarios_get loginUser = new db_usuarios_get(); //db_usuarios_get passUser = new db_usuarios_get(); Stringsql="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(SQLExceptione){// TODO Auto-generated catch block JOptionPane.showMessageDialog(null,"ERRO "+e.getMessage());}}}
então, como tinha dito, vc simplesmente cria um objeto Usuario.
Usuariousuario=newUsuario(JtextFieldLogin.getText(),JPassword.getPassword());// cria o objeto já setando login e senha// cria a conexãodb_usuariosdbusuarios=newdb_usuarios();dbusuarios.Conect();// cadastradbusuarios.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()//fechadbusuarios.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?
packagedb;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjavax.swing.JOptionPane;publicclassConnUsuarios{privateConnectioncon;privatePreparedStatementpst;publicvoidConnect(){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(Exceptione){JOptionPane.showMessageDialog(null,"Não foi possível fazer conexão"+e.getMessage());}}publicvoidFecha(){try{con.close();}catch(Exceptione){JOptionPane.showMessageDialog(null,"ERRO: "+e.getMessage());}}publicvoidinserir(){try{Connect();//db_usuarios_get loginUser = new db_usuarios_get(); //db_usuarios_get passUser = new db_usuarios_get(); Stringsql="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(SQLExceptione){// TODO Auto-generated catch block JOptionPane.showMessageDialog(null,"ERRO "+e.getMessage());}}}
zicky23
fiz da seguinte forma....
esse é o ConnUsuarios
packagedb;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjavax.swing.JOptionPane;publicclassConnUsuarios{privateConnectioncon;privatePreparedStatementpst;publicvoidConnect(){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(Exceptione){JOptionPane.showMessageDialog(null,"Não foi possível fazer conexão"+e.getMessage());}}publicvoidFecha(){try{con.close();}catch(Exceptione){JOptionPane.showMessageDialog(null,"ERRO: "+e.getMessage());}}publicvoidinserir(Usuariosusuario){try{Connect();//ConnUsuarios loginUser = new ConnUsuarios(); //ConnUsuarios passUser = new ConnUsuarios(); Stringsql="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(SQLExceptione){// TODO Auto-generated catch block JOptionPane.showMessageDialog(null,"ERRO "+e.getMessage());}}}
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:
usuariosusuario=newUsuarios();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?
agora deste jeito a senha fica visível, é bom criptografa-la.
zicky23
deu certo....\o
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){// TODO add your handling code here:Usuariosusuario=newUsuarios();// cria o objeto já setando login e senhaStringsenha=newString(FieldPass.getPassword());usuario.Usuarios(FieldNome.getText(),FieldLogin.getText(),senha,ComboNivel.getSelectedIndex());// cria a conexão ConnUsuariosdbusuarios=newConnUsuarios();dbusuarios.Connect();// cadastra dbusuarios.inserir(usuario);//fecha dbusuarios.Fecha();}