Classe login consultar o com o banco!

8 respostas
M

Gente veja meu problema tenho a classe login e tenho a otra classe no banco e quero digitar nos 2 jtextfield da classe login e pressionar o botao entrar ele fazer a consulta no banco e entrar veja o q eu tenho feito na minha classe de conexao a minha sql ta assim

sql ="select * from key Where usuario like '"+usuario+
                                    "' and senha like '"+senha+"'";

e tambem tenho as 2 String que captura os 2 jtextfield da minha classe login porem n sei trazer minhas strings da classe login para minha sql que esta em uma outra classe nao sei instanciar do login para a classe de conexao ;/ alguem pode me dar uma maozinha para um iniciante esforçado que n durmiu ate agora?

8 Respostas

berg.pb

sei bem o que é isso!!

tenta assim:

sql ="select * from key Where usuario like '"+nomeDoTextFieldUsuario.getText()+ "' and senha like '"+nomeDoTextFieldSenha.getText()+"'";

Acho que entendi que foi isso o que vc não soube fazer. Pegar o valor dos campos digitados do JTextField.
Se não for, posta mais detalhes…

Eu tb to online…só que dormi um pouquinho!!

Abraços

M

Man_United:
Gente veja meu problema tenho a classe login e tenho a otra classe no banco e quero digitar nos 2 jtextfield da classe login e pressionar o botao entrar ele fazer a consulta no banco e entrar veja o q eu tenho feito na minha classe de conexao a minha sql ta assim

sql ="select * from key Where usuario like '"+usuario+
                                    "' and senha like '"+senha+"'";

e tambem tenho as 2 String que captura os 2 jtextfield da minha classe login porem n sei trazer minhas strings da classe login para minha sql que esta em uma outra classe nao sei instanciar do login para a classe de conexao ;/ alguem pode me dar uma maozinha para um iniciante esforçado que n durmiu ate agora?

Você está usando SQL Server?
Se sim, os campos usados para a comparação devem ser varchar, se for por exemplo text não vai consultar.

Não use a cláusula LIKE na comparação de usuário e senha, use o símbolo de igual (=) se você usar LIKE e o usuário digitar % e % vai retornar qualquer usuário e senha, significa que qualquer um pode ter acesso ao sistema.

como já disseram acima, use assim NomeDoJTextField.getText();

Não me lembro bem mas creio que não é necessário por apostrofes entre os nomes dos campos.

tente assim:

SQL ="SELECT * FROM key WHERE usuario = "+NomeDoJTextFieldUsuario.getText()+ " AND senha = "+NomeDoJTextFieldSenha.getText();

Se precisar das apóstrofes é só adicioná-las.

M

mas n da pra mim colocar o nome do jtextfield pq ocmo falei a classe o banco é uma a classe do jtextfield é otra ! =\

arkhan

Passa o valor do jtextfield para o método que irá executar a operação de autenticação

por exemplo:

Método que realiza autenticação

public boolean validaLogin(String login, String senha){
 //Executa a query
}
M

Ah sim nao prestei atenção nisso :slight_smile:

Como disseram ai em cima, coloca para receber os valores dos campos na descrição do método.

public boolean Login(String Login, String Senha){ //seu código }

hora que clicar no botão vc coloca assim

Login(JTextFieldNome.getText().trim(), JTextFieldSenha.getText());

Assim deve funcionar.

M

veja na mnha classe do banco deixei minha sql assim

~ sql ="select * from key Where usuario ='"+key.getUsuario()+ "' and senha ='"+key.getSenha()+"'"; System.out.println(sql);

e ele pinta o usuario digitado e a senha digitada nos jtextfield mas nao sei como termina a minha classe de banco depois de conferir se a senha e o user e o digitado o q tenho que fazer ? blz digitei a senha e o user nos jtextfield cliquei no botao ele conferiu mas como faço a regra de se o usuario digitado foi correto entra no sistema e se nao digite denovo corretamente!

public boolean conecta(KeyBean key)
    {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql ="";

        sql ="select * from key Where usuario ='"+key.getUsuario()+
                               "' and senha ='"+key.getSenha()+"'";
        System.out.println(sql);
        
        try
        {
            Class.forName(driver);
        }
        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }
        return true;
    }
berg.pb

só uma proposta.

//exectua a consulta pelo ResultSet
rs = conn.executeQuery("select * from key Where usuario ='"+key.getUsuario()+ 
                    "' and senha ='"+key.getSenha()+"'");

//verifica se houve retorno. se o resultset trouxer resultado, ele vem true. caso contrário, false.
if (rs.next())
   return true;

return false;

pronto. a partir deste ponto é na aplicação. se o resultado for true, vc fecha a tela de login e abre a janela principal.
se for false, então vc exibe uma msg para o usuário.

juntando o meu e o seu, ficaria mais ou menos assim:

public boolean conecta(KeyBean key)
    {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql ="";
        
        try
        {
            rs = conn.executeQuery("select * from key Where usuario ='"+key.getUsuario()+ 
                    "' and senha ='"+key.getSenha()+"'");
        }
        catch (ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }
       if (rs.next())
         return true;

      return false;
    }

abraços

V

Olá amigos,
Estou com problemas no meu sistema de criptografia de senhas para login.Eu sou novo no java, consegui um codigo que funcionou comigo a um tempo atras, mas como já estou um tempo sem programar, não sei direito aonde estou errando. Eu criei um pacote java com o nome de caminho, e dentro de caminho, criei duas servelets, uma Cadastro e outra Controle.
Estou postando os codigos do mesmo jeito que eles estão no projeto, sei que está dando alguns erros, mas não estou conseguindo identifica-los, e como aqui no forum tem profissionais altamente qualificados, vou precisar de uma ajuda para identificar estes erros. Eu utilizo o netbeans e o mysql.
Vejam os codigos aí:

Na servlet Cadastro:


package caminho;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.security.*;
import java.sql.*;
import sun.misc.*;


public class Cadastro extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String senha2 = request.getParameter("senha2");
if(senha.equals(senha2)){
    byte chave1[] = login.getBytes();
    login = new BASE64Encoder().encode(chave1);
    byte chave2[] = senha.getBytes();
    senha = new BASE64Encoder().encode(chave2);

try{
Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","rodrigo");
PreparedStatement stmt=con.prepareStatement("insert into usuario values(?,?)");
            stmt.setString(1,login);
            stmt.setString(2,senha);
            stmt.execute();
            stmt.close();
            out.print("<br>senha:"+senha);
            out.print("<br>Login:"+login);
//catch(Exeption e){
out.print(e.getMessage());
}


}
      }
}



Na servlet Controle:

package caminho;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import sun.misc.*;
import java.sql.*;

public class Controle extends HttpServlet {
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
       
        
PrintWriter out = response.getWriter();
String login = request.getParameter("login");
String senha = request.getParameter("senha");
byte chave1[] = login.getBytes();
byte senha[] = senha.getBytes();
    login = new BASE64Encoder().encode(chave1);
    senha = new BASE64Encoder().encode(chave2);
    
    try{
Class.forName("com.mysql.jdbc.Driver");
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","rodrigo");
PreparedStatement stmt=con.prepareStatement("select * from usuario where login=? and senha=?");
            stmt.setString(1,login);
            stmt.setString(2,senha);
            ResultSet rs=stmt.executeQuery();
            while (rs.next())
           out.print("Acesso ok,login e senha confere");
            break;
    }
    
     }catch(Exeption e){
             out.print(e.getMessage());
}


Depois criei index.jsp

<form method=post action="Controle">

Login:<br>
    <INPUT TYPE=text name=login VALUE="" size="15">
    <br> Senha:<br>
        <input type=password name=senha value="" size="15">
            <br><br>
                <input type="submit" value="Logar">
            </form>
            <br> 
            <a href="cadastro.jsp">Cadastre-se</a>
            

E Cadastro.jsp


<form method=post action="Cadastro">
    Login:<br>
    <INPUT TYPE=text name=login VALUE="" size="15">
    <br> Senha:<br>
        <INPUT TYPE=text name=senha VALUE="" size="15">
    <br> Redigite Senha<br>
        <input type=password name=senha2 value="" size="15">
            <br><br>
                <input type="submit" value="Enviar">
            </form>
Estou postando os codigos da mesma forma que estão no projeto, não sei se esta faltando alguma biblioteca, e sintaxe está dando erro, se alguem dar uma ajuda aí... Agradeço.

Obrigado, abç!!!

Criado 29 de março de 2009
Ultima resposta 21 de abr. de 2009
Respostas 8
Participantes 5