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?
Login em sistema!
43 Respostas
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?
Web ou desktop?
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!
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:
}
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
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]
classe TestBD:
/*
* 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;
}
}
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);
obs: parece que ta irritado, desculpa a ignorancia no assunto, primeira vez que tento.
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);
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;
}
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.
qual o banco que voce esta utilizando?
temos essa tecnologia em nossa mão, é pra ser utilizada, da uma pesquisada voce vai ver como vai ser mais simples ainda
ate mais.
lineofgol uso MySql. Vou tentar terminar primeiro, ai depois pesquiso e implemento para melhorar
não deu o que me passou, ai coloquei assim:colocar na query?! seria isso?ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+login); ResultSet dados1=bd.buscaRegistros("select * from usuarios where senha="+senha);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; }quando coloco isso os ResultSet dão erro.
Releia a minha resposta novamente, já tem um exemplo lá.
precisa de aspas simples para comprar não?
olha:
ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+"'"+login+"'");
ResultSet dados1=bd.buscaRegistros1("select * from usuarios where senha="+"'"+senha+"'");
e tenho buscaRegistros e buscaRegistros1;
eu li sua resposta
como assim ao passado?e como eu faço para comparar a senha?
eu tento colocar um return no buscaRegistro, mas lá não pode.
DESENHANDO
ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+login " and senha = "+senha);
Conseguiu entender?
já fiz isso –
to tentando desde que parei de postar! fiquei lendo e relendo o que falou.
–
mas o meu ficou desse jeito, porque o jeito que você fez não tem como fica um ponto de interregação !
ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+"'"+login+"' and senha="+"'"+senha+"'");
mas mesmo assim, ainda está dando erro! =/
erro:
BD abriu
Login: admin Senha: admin
24/06/2011 17:19:56 controleestoque.ControleEstoquePrincipal btloginActionPerformed
GRAVE: null
java.sql.SQLException: Before start of result set
Ok, então, com esta query você coloca no ResultSet dados nenhum resultado (caso login/senha não sejam validados) ou um único.
Então, só precisa percorrer o ResultSet
while(dados.next()){
String nome = rs.getString("nome");
}
E aí deve obter o nome.
desculpa, não to entendo.
alguem pode me ajudar não consigo de jeito nenhuma comparar o que o usuário entra nos tflogin e no sfsenha com os no banco de dados
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("Login: "+login+" Senha: "+senha);
ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+"'"+login+"' and senha="+"'"+senha+"'");
try
{
while(dados.next())
{
String a=dados.getString("nome");
String b=dados.getString("senha");
}
} catch (SQLException erro)
{
System.out.println(">>> Erro - Classe não encontrada = " + erro.getMessage());
System.exit(0);
}
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 Senha está incorreto");
tflogin.setText(null);
pfsenha.setText(null);
}
bd.desconectaDB();
// TODO add your handling code here:
}
o erro está nessa linha
if (login.equals(a) && senha.equals(b)){
o a e o b
Oi,
Por que não compara direto…
"SELECT nome FROM TB_acesso WHERE nome ='"+ tf_usuario.getText()+"' and senha = '"+ tf_senha.getText()+"'";
Sobre persistência de dados…
Oi *-*
então, eu acabei de resolver '-'
o drsmachado ajudou muito, agora que entendi, depois de ficar lendo...
Anime obrigado viu *--* eu nem sabia que podia fazer isso, vou salvar para testar depois...
olha como ficou, é primeira vez que faço:
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("Login: "+login+" Senha: "+senha);
ResultSet dados=bd.buscaRegistros("select * from usuarios where nome ="+"'"+login+"' and senha="+"'"+senha+"'");
try
{
while(dados.next())
{
String a=dados.getString("nome");
String b=dados.getString("senha");
if (login.equals(a) && senha.equals(b)){
JOptionPane.showMessageDialog(null,"Seu login foi feito com sucesso");
frame.setVisible(true);
}
JOptionPane.showMessageDialog(null,"Seu Usuário ou Senha está incorreto");
tflogin.setText(null);
pfsenha.setText(null);
}
} catch (SQLException erro)
{
System.out.println(">>> Erro - Classe não encontrada = " + erro.getMessage());
System.exit(0);
}
bd.desconectaDB();
// TODO add your handling code here:
}
agora se eu quisesse mandar uma mensagem
JOptionPane.showMessageDialog(null,"Seu Usuário ou Senha está incorreto");
tflogin.setText(null);
pfsenha.setText(null);
caso o login não seja o certo, como faço?
Que bom que conseguiu, deve estar radiante rsrs…
Da uma olhada nesse material sobre persistência de dados… 
to até bobo aqui kkkk
primeira vez, comecei a mexer era 11h da manhã -----
vce viu a minha pergunta? poderia me ajudar? pls
agora se eu quisesse mandar uma mensagem
JOptionPane.showMessageDialog(null,"Seu Usuário ou Senha está incorreto"); tflogin.setText(null); pfsenha.setText(null);caso o login não seja o certo, como faço?
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 Senha está incorreto");
tflogin.setText(null);
pfsenha.setText(null);
}
assim não foi, eu tentei.
sabe como deixar o JFrame impossivel de se dimensionar? de mudar o tamanho?
assim não foi, eu tentei.sabe como deixar o JFrame impossivel de se dimensionar? de mudar o tamanho?
Pesquise sobre método setSize,setBounds …
http://www.java2s.com/Tutorial/Java/0240__Swing/ResizingandpositioningaJFrame.htm
Está usando IDE?
estou sim, Netbeans!
assim não foi, eu tentei.sabe como deixar o JFrame impossivel de se dimensionar? de mudar o tamanho?
essa eu sei! auehauh
seuframe.setResizable(false);
assim não foi, eu tentei.sabe como deixar o JFrame impossivel de se dimensionar? de mudar o tamanho?
essa eu sei! auehauh
seuframe.setResizable(false);
obrigado sunsite.
Desse jeito uma simples injeção de sql pode quebrar seu esquema de login facilmente. Procure sobre PreparedStatement e como nosso amigo acima falou, não misture tudo!
Ou se preferir, começe a estudar sobre Hibernate ou JPA. Fuja da concatenação!
então to estudando isso sim, esse foi o primeiro sistema de login, queria conseguir fazer. Agora estou lendo sobre Persistência, para melhorar ele. Mas muito obrigado pela dica.