Login em sistema!

galera procurei tudo pelo forum, no youtube, no google, só achei coisas sobre java script e javaweb.
alguem sabe onde encontro alguma coisa ensinando a criar um login, criei um software para gerenciamento de livros, e preciso que so o admin consiga usar esse software. e pra isso fiz 1 tela de login e já criei a tabela no banco de dados, usuario: admin e senha: admin. Mas não acho nada para me ajudar a criar, alguém pode me ajudar?

[quote=felipexavier]galera procurei tudo pelo forum, no youtube, no google, só achei coisas sobre java script e javaweb.
alguem sabe onde encontro alguma coisa ensinando a criar um login, criei um software para gerenciamento de livros, e preciso que so o admin consiga usar esse software. e pra isso fiz 1 tela de login e já criei a tabela no banco de dados, usuario: admin e senha: admin. Mas não acho nada para me ajudar a criar, alguém pode me ajudar?

[/quote]
Web ou desktop?

Web:
http://www.google.com.br/#hl=pt-BR&xhr=t&q=login+jsp&cp=7&pf=p&sclient=psy&site=&source=hp&aq=0&aqi=&aql=&oq=login+j&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=ae8731fa1277d9bf&biw=1280&bih=919

Swing:
http://www.google.com.br/#sclient=psy&hl=pt-BR&source=hp&q=login+swing&aq=f&aqi=&aql=&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=ae8731fa1277d9bf&biw=1280&bih=919

Oi,

Não entendi nada. Você já fez a tela? Porque não controla isso no próprio banco… dando permissões (grants) em só algumas tabelas para determinado usuário?

Tchauzin!

fiz a tela no netbeans, o resto do codigo ta todo feito, mas quero que tenha um login, pra eu aprender mesmo.

quero fazer login para que so o admin consiga acessar o software, ficou mais claro?

drsmachado e obrigado, é desktop, to lendo os links…

Postei o link aí.
Pesquisa, tenta e, se der erro, posta aqui.

usando isso no botão é fácil

if (tflogin.equals("admin") && pfsenha.equals("admin")) 

mas eu preciso que ele pegue no banco de dados. To fazendo uns testes e já posto aqui, mas se alguém tiver sugestão será muito bem-vinda

faz um metodo que retorno o objeto login do seu banco e compare com o que voce esta passando

da uma olhada no que fiz até agora, ta falando que uma classe não existe!

[code]private void btloginActionPerformed(java.awt.event.ActionEvent evt) {
if (tflogin.getText().equals("") || pfsenha.getText().equals("")) {
JOptionPane.showMessageDialog(null,“Os campos login e senha não podem ser vazios”);
return; //Vamos usar o return para cair fora de uma vez, assim não precisamos do els
}
bd.conectaDB();
if (bd.estaConectada())
System.out.println(“BD abriu”);
String login=tflogin.getText();
String senha=pfsenha.getText();
System.out.println("Logn: “+login+” Senha: "+senha);
ResultSet dados=bd.buscaRegistros(“select * from usuarios where nome=”);
String a = null;
try {
a = dados.getString(“nome”);
} catch (SQLException ex) {
Logger.getLogger(ControleEstoquePrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
String b = null;
try {
b = dados.getString(“senha”);
} catch (SQLException ex) {
Logger.getLogger(ControleEstoquePrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
if (login.equals(a) && senha.equals(b)){
JOptionPane.showMessageDialog(null,“Seu login foi feito com sucesso”);
frame.setVisible(true);
}else{
JOptionPane.showMessageDialog(null,“Seu Usuário ou Senhas está incorreto”);
}
bd.desconectaDB();

    // TODO add your handling code here:
}

[/code]

tá horrivel né?!

1, tá horrível sim, pois você mistura tudo (Apresentação, DAO, negócios).
2 - Qual a classe que é apontada como faltante?

tipo nunca fiz um sistema de login, to fazendo sozinho, tentando sozinho, desculpa.

deu um erro assim agora:

BD abriu
Logn: admin Senha: admin

Erro na conexão Banco de Dados: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1

Botão Login:

[code]private void btloginActionPerformed(java.awt.event.ActionEvent evt) {
if (tflogin.getText().equals("") || pfsenha.getText().equals("")) {
JOptionPane.showMessageDialog(null,“Os campos login e senha não podem ser vazios”);
return; //Vamos usar o return para cair fora de uma vez, assim não precisamos do els
}
bd.conectaDB();
if (bd.estaConectada())
System.out.println(“BD abriu”);
String login=tflogin.getText();
String senha=pfsenha.getText();
System.out.println("Logn: “+login+” Senha: "+senha);
ResultSet dados=bd.buscaRegistros(“select * from usuarios where nome=”);
String a = null;
try {
a = dados.getString(“nome”);
} catch (SQLException ex) {
Logger.getLogger(ControleEstoquePrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
String b = null;
try {
b = dados.getString(“senha”);
} catch (SQLException ex) {
Logger.getLogger(ControleEstoquePrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
if (login.equals(a) && senha.equals(b)){
JOptionPane.showMessageDialog(null,“Seu login foi feito com sucesso”);
frame.setVisible(true);
}else{
JOptionPane.showMessageDialog(null,“Seu Usuário ou Senhas está incorreto”);
}
bd.desconectaDB();

    // TODO add your handling code here:
}

classe TestBD:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package controleestoque;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TesteBD {

// Atributos Banco
private int BD=1;                        // 1-msql, 2-access, 
private String servidor="localhost";
private String porta="3306";
private String banco="controle_estoque";
private String usuario="root";
private String senha="root";
 
// Atributos ODBC
private String driver;
private String strConexao;
private Connection conexao;
private Statement stmt;
private ResultSet rs;

// Instancia Unica
private static TesteBD instancia;
// Construtores
public TesteBD()
{
    switch (BD)
    {
        case 1: 
            driver = "com.mysql.jdbc.Driver";
            strConexao = "jdbc:mysql://"+servidor+"/"+banco+"?user="+usuario+"&password="+senha;
            //strConexao = "jdbc:mysql://localhost/controleacademico?user=root&password=lilica89";
            break;
    }
}
public static TesteBD getIntancia()
{
    if(instancia==null) instancia = new TesteBD();
    return instancia;
}
public TesteBD(int BD, String servidor, String porta, String banco, String usuario, String senha)
{
    this.BD = BD;
    this.servidor = servidor;
    this.banco = banco;
    this.porta = porta;
    this.usuario = usuario;
    this.senha = senha;
    switch (BD)
    {
        case 1: 
            driver = "com.mysql.jdbc.Driver";
            strConexao = "jdbc:mysql://"+servidor+":"+porta+":"+banco;
            break;
    }
}

// M?odos Set/Get

// M?odos
public void conectaDB()
{
    // Faz a conexão
    try
    {
        Class.forName(driver);
        conexao = DriverManager.getConnection(strConexao);
    } catch(SQLException erro)
    {
    System.out.println(">>> Erro - Conexão Banco de Dados: " + erro.getMessage());
        System.exit(0);
    }catch(ClassNotFoundException erro)
    {
        System.out.println(">>> Erro  - Classe não encontrada = " + erro.getMessage());
        System.exit(0);
       
    }
}

public ResultSet buscaRegistros(String sql)
{
     // Faz a conexão
    try
    {
        stmt = conexao.createStatement();
        rs = stmt.executeQuery(sql);
    } catch(SQLException erro)
    {
        System.out.println(">>>Erro na conexão Banco de Dados: " + erro.getMessage());
        System.exit(0);
    }
    return rs;
}       

public void desconectaDB()
{
    try { 
    if(!conexao.isClosed()) conexao.close();
    } catch(SQLException erro)
    {
        System.out.println("Erro na conex? Banco de Dados: " + erro.getMessage());
        System.exit(0);
    }
}

public void liberaResultados()
{
    try{
    if(!rs.isClosed()) rs.close();
    if(!stmt.isClosed()) stmt.close();
    } catch(SQLException erro)
    {
        System.out.println("Erro na conexão Banco de Dados: " + erro.getMessage());
        System.exit(0);
    }
}

public boolean estaConectada()
{
    if(conexao==null)
        return false;
    else
        return true;
}

public boolean executa(String sql)
{
    // Faz a conexão
    boolean ret;
    try
    {
        stmt = conexao.createStatement();
        ret = stmt.execute(sql);
        return ret;
    } catch(SQLException erro)
    {
        System.out.println("Erro na conexão Banco de Dados: " + erro.getMessage());
        System.exit(0);
    }
    return false;
}

}[/code]

ResultSet dados=bd.buscaRegistros("select * from usuarios where nome=");  

Nome = a que?

eu tirei isso, era esse mesmo o problema.

mas mesmo assim ainda não ta comparando com o que tem no banco de dados. Toda hora mesmo colocando Login e senha “admin” não vai. da a mensagem de erro.

 JOptionPane.showMessageDialog(null,"Seu Usuário ou Senha está incorreto");

Justamento por que você não diz o que o maldito tem que fazer.
Cara, você tem dois dados que solicita ao usuáiro, certo? Somente e apenas somente se você buscar no banco o(s) usuário(s) que possuem a chave específica “login” igual ao passado e, com aquela senha específica irão ter permissão, certo?

Sendo assim, o que você deve fazer?

Tempo pra pensar

eu tenho que conseguir comparar os dados que colocaram nos campos login e senha, com o login(nome no bd) e senha do banco de dados, certo?!
mas como eu faço isso, como eu faço esse teste?

nome = ‘admin’ no código?

obs: parece que ta irritado, desculpa a ignorancia no assunto, primeira vez que tento.

ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+login);

[quote=felipexavier]
obs: parece que ta irritado, desculpa a ignorancia no assunto, primeira vez que tento.[/quote]

Sou sempre assim.
Então, você precisa colocar ambos na query. Se houver algum retorno, o usuário existe e a senha coincide.
Senão, ou usuário não existe ou senha não confere ou ambos.

Isso trará todos os usuários que possuam login = ao passado.
Caso teu sistema restrinja (e deve fazer isto), é só comparar, verificando se a senha = senha que foi informada.
Senão, já coloca aí

ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+login " and senha = "+senha);

E faz como eu disse…

posso dar uma dica pra voce, usa uma classe de persistencia pra trabalhar com o seu banco, nao fica escrevendo as querys na tela e alem de seu codigo ficar horrivel e ninguem entender nada

não deu o que me passou, ai coloquei assim:

ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+login); ResultSet dados1=bd.buscaRegistros("select * from usuarios where senha="+senha);

colocar na query?! seria isso?

[code]public ResultSet buscaRegistros(String sql, String sql2)
{
// Faz a conexão
try
{
stmt = conexao.createStatement();
rs = stmt.executeQuery(sql);
stmt = conexao.createStatement();
rs = stmt.executeQuery(sql2);

    } catch(SQLException erro)
    {
        System.out.println(">>>Erro na conexão Banco de Dados: " + erro.getMessage());
        System.exit(0);
    }
    return rs;
} [/code]

quando coloco isso os ResultSet dão erro.

lineofgol não sei como fazer isso, é a primeira vez que to fazendo isso, mas já vou começar a ler sobre persistencia.