Problemas com sistema de login

[code]Galera boa tarde estou criando um sistema de login java Desktop mas ele não esta pesquisando o usuario e senha vejam o codigo

ResultSet rs =st.executeQuery(“select * from usuarios where usuario=”+texto1.getText()+" and senha="+texto2.getPassword()+" ");

rs.next();

ele não achao o usuario e senha[/code]

Acredito que campos texto (Varchar) devam ser pesquisados entre aspas simples.

A sua query está assim:

mas deveria ser assim:

Seu código inteiro:

Aqui dá pra notar um par de aspas simples “abraçando” e texto que vem dos métodos get.

Repare bem, voce está colocando um espaço no final de toda senha a ser pesquisada.

Ola, você já viu se os dados foram inseridos?

outra, que tipo de campo é o usuario e a senha,
acho que voce teria que fazer assim na hora do select:

ResultSet rs =st.executeQuery("select * from usuarios where usuario='"+texto1.getText()+"' and senha='"+texto2.getPassword()+"' ");  

nao sei se tu viu mas eu coloquei uma aspas simples antes das aspas duplas, ja que o campo eh do tipo varchar ou char, acho eu

se tu nao achar as aspas simples:


select * from usuarios where usuario=/*aqui as aspas simples*/"+texto1.getText()+"/*aqui as aspas simples para fechar*/ and senha=/*aqui as aspas simples*/"+texto2.getPassword()+"/*aqui as aspas simples para fechar*/ ");


espero ter ajudado flws

Primeiramente, sugiro que ao invés de utilizar o objeto st do tipo Statement utilize do tipo PreparedStatement. Ficaria dessa forma.

pStm = conn.prepareCall(""select * from usuarios where usuario = ? and senha = ?");
pStm.setString(1, texto1.getText());
pStm.setString(2, texto2.getText());
pStm.execute();
rs = pStm.getResultSet();

Caso não possa, acho que o problema é que esta faltando você colocar aspas em suas strings do banco. Ficaria assim:

ResultSet rs =st.executeQuery("select * from usuarios where usuario='"+texto1.getText()+'" and senha='"+texto2.getPassword()+"'");

Porém fica muito esquisito.

[code]Class.forName(“com.mysql.jdbc.Driver”);

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost/teste”,“root”,"");

Statement st = con.createStatement();

ResultSet rs =st.executeQuery(“select * from usuarios where usuario=’”+texto1.getText()+"’ and senha=’"+texto2.getPassword()+"’ ");
rs.next();[/code]

Bom galera segui a tudo que me falaram mesmo assim não foi…se muderem me ajudar desde modo esta entrando mais qualquer usuario loga e o corretto é só o do banco é como se não divesse sendo feita a verificação o pior que não da erro de sql esta muito estranho[code]

[quote=wagner_a_lima]Primeiramente, sugiro que ao invés de utilizar o objeto st do tipo Statement utilize do tipo PreparedStatement. Ficaria dessa forma.

pStm = conn.prepareCall(""select * from usuarios where usuario = ? and senha = ?");
pStm.setString(1, texto1.getText());
pStm.setString(2, texto2.getText());
pStm.execute();
rs = pStm.getResultSet();

Caso não possa, acho que o problema é que esta faltando você colocar aspas em suas strings do banco. Ficaria assim:

ResultSet rs =st.executeQuery("select * from usuarios where usuario='"+texto1.getText()+'" and senha='"+texto2.getPassword()+"'");

Porém fica muito esquisito.[/quote]

Alem de ficar esquisito vc acaba tendo aquele grande problema de “Joana D’arc”, deixando o código vulneravel a SQL Injections!



[code]import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

public class UsuarioSenha extends JFrame{

JLabel titulo,rotulo2,rotulo3;
JTextField texto1;
JPasswordField texto2;
JButton entrar;

public UsuarioSenha(){
super("Login do Sistema");
Container tela = getContentPane();
tela.setLayout(null);

titulo =new JLabel("Entre com usuario e senha");
rotulo2=new JLabel("Usuario");
rotulo3=new JLabel("Senha");

texto1 = new JTextField(15);
texto2 = new JPasswordField(15);

entrar = new JButton("Entrar");

titulo.setBounds(40,10,200,20);
rotulo2.setBounds(50,60,60,20);
rotulo3.setBounds(50,80,60,20);

texto1.setBounds(100,60,80,20);
texto2.setBounds(100,80,80,20);

entrar.setBounds(100,130,90,20);
entrar.setMnemonic(KeyEvent.VK_E);
entrar.addActionListener(
new ActionListener(){

public void actionPerformed(ActionEvent e){

try{

Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/teste","root","");

Statement st = con.createStatement();

ResultSet rs =st.executeQuery("select * from usuarios where usuario='"+texto1.getText()+"' and senha='"+texto2.getPassword()+"'");      
rs.next();
JOptionPane.showMessageDialog(null,"Bem vindo ao sistema","User Logado",JOptionPane.INFORMATION_MESSAGE);
setVisible(false);

}

catch(Exception event){
JOptionPane.showMessageDialog(null,"Usuario não existe \n Comandos Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});

tela.add(titulo);
tela.add(rotulo2);
tela.add(rotulo3);

tela.add(texto1);
tela.add(texto2);

tela.add(entrar);

setSize(300,200);

setVisible(true);

}


public static void main(String args[]){

UsuarioSenha app= new UsuarioSenha();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

[/code]

[code]import javax.swing.;
import java.awt.
;
import java.awt.event.;
import java.sql.
;

public class UsuarioSenha extends JFrame{

JLabel titulo,rotulo2,rotulo3;
JTextField texto1;
JPasswordField texto2;
JButton entrar;

public UsuarioSenha(){
super(“Login do Sistema”);
Container tela = getContentPane();
tela.setLayout(null);

titulo =new JLabel(“Entre com usuario e senha”);
rotulo2=new JLabel(“Usuario”);
rotulo3=new JLabel(“Senha”);

texto1 = new JTextField(15);
texto2 = new JPasswordField(15);

entrar = new JButton(“Entrar”);

titulo.setBounds(40,10,200,20);
rotulo2.setBounds(50,60,60,20);
rotulo3.setBounds(50,80,60,20);

texto1.setBounds(100,60,80,20);
texto2.setBounds(100,80,80,20);

entrar.setBounds(100,130,90,20);
entrar.setMnemonic(KeyEvent.VK_E);
entrar.addActionListener(
new ActionListener(){

public void actionPerformed(ActionEvent e){

try{

Class.forName(“com.mysql.jdbc.Driver”);

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost/teste”,“root”,"");

Statement st = con.createStatement();

ResultSet rs =st.executeQuery(“select * from usuarios where usuario=’”+texto1.getText()+"’ and senha=’"+texto2.getPassword()+"’");
rs.next();
JOptionPane.showMessageDialog(null,“Bem vindo ao sistema”,“User Logado”,JOptionPane.INFORMATION_MESSAGE);
setVisible(false);

}

catch(Exception event){
JOptionPane.showMessageDialog(null,“Usuario não existe \n Comandos Inválidos”,“Mensagem do Programa”,JOptionPane.ERROR_MESSAGE);
}
}});

tela.add(titulo);
tela.add(rotulo2);
tela.add(rotulo3);

tela.add(texto1);
tela.add(texto2);

tela.add(entrar);

setSize(300,200);

setVisible(true);

}

public static void main(String args[]){

UsuarioSenha app= new UsuarioSenha();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

[/code]

não está entrando nunca no catch

if ( rs.next() )

if(rs.next()){
String u = rs.getString(1);   
String s = rs.getString(2);
JOptionPane.showMessageDialog(null,"Bem vindo ao sistema","User Logado",JOptionPane.INFORMATION_MESSAGE);   
setVisible(true);   
}else{
JOptionPane.showMessageDialog(null,"Usuario não existe \n Comandos Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);   
setVisible(true);   
}

não executei… mas é nessa linha…