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?
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: adminErro 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.