erro: erro de sintaxe da cláusula if

String jk = "where nam='" + txt1.getText() + "'";
String ik = "and password='" + txt2.getPassword() + " ' ";
String sql;
sql = "SELECT * FROM Table1" + jk + ik;
rs = stmt.executeQuery(sql);

o erro tem ocorrido seu erro de sintaxe na cláusula.

2
Há também um espaço após a senha e antes do fechamento de ', o que fará com que não funcione. Além disso, a coluna é realmente denominada nam ? Ou é nome ? É muito importante ser preciso e não desleixado.
adicionado o autor Jesper, fonte
isso parece errado, tanto na sintaxe quanto na lógica: + jk + ik
adicionado o autor Stultuske, fonte
Você precisa de espaços antes de , onde e e .
adicionado o autor Darshan Lila, fonte

7 Respostas

Tente seguir:

String jk =" where nam='"+txt1.getText()+"'";        //note the space before where
String ik =" and password='"+txt2.getPassword()+" '  //and space before and
String sql;                 
sql = "SELECT * FROM Table1" +jk+ik;                        
rs = stmt.executeQuery(sql); 

Inicialmente, sua consulta parecia seguir

SELECT * FROM Table1where nam='xyz'and password='xyz';

Depois de espaços

SELECT * FROM Table1 where nam='xyz' and password='xyz';
2
adicionado

Para evitar tais erros no futuro, posso recomendar o PreparedStatement . Aqui é o tutorial do Oracle.

String stmnt = "SELECT * FROM Table1 WHERE nam=? and password=?;";
PreparedStatement pstmt = con.prepareStatement(stmnt);
pstmt.setString(1, txt1.getText());
pstmt.setString(2, txt2.getText());
ResultSet rs = pstmt.executeQuery();
1
adicionado
Não apenas para evitar esses erros, mas também para evitar injeção de SQL .
adicionado o autor Jesper, fonte

Tente isto:

String jk =" where nam='"+txt1.getText()+"'";                
String ik =" and password='"+txt2.getPassword()+" ' ";                                              

    String sql;                 
sql = "SELECT * FROM Table1" +jk+ik;                        
rs = stmt.executeQuery(sql); 

Você esqueceu de adicionar espaços entre "where" e "and" Também sinto que nam será nome na coluna da tabela

0
adicionado
Por favor selecione esta como sua resposta clicando na marca de seleção
adicionado o autor Sanghita, fonte
está funcionando agora. Obrigado pela ajuda.
adicionado o autor Karrthik Reddy Chinasani, fonte
String jk =" where nam='"+txt1.getText()+"' ";
String ik ="and password='"+txt2.getPassword()+"'";     
String sql = "SELECT * FROM Table1" +jk+ik;                        
rs = stmt.executeQuery(sql); 

isso deve funcionar bem ..! Felicidades feliz codificação .. :)

0
adicionado

Quando você está combinando jk e ik wih sql, não há espaço entre o nome da tabela e a cláusula where. É por isso que você está recebendo o erro. Tem um spece lá

String jk =" where nam='"+txt1.getText()+"'";                
String ik =" and password='"+txt2.getPassword()+" ' ";                               String sql;                 
sql = "SELECT * FROM Table1" +jk+ik;                        
rs = stmt.executeQuery(sql); 
0
adicionado

You must have a blank between jk and ik

sql = "SELECT * FROM Table1" +jk+" "+ik; 

Mas é melhor aprender sobre declarações preparadas.

0
adicionado

Adicione espaços entre a cláusula de e onde .

String jk ="where nam='"+txt1.getText()+"'";
String ik ="and password='"+txt2.getPassword()+" ' "; String sql;
sql = "SELECT * FROM Table1" + " " + jk + " " + ik; rs = stmt.executeQuery(sql);
0
adicionado
ya está trabalhando agora. Obrigado pela ajuda.
adicionado o autor Karrthik Reddy Chinasani, fonte