Erro estranho com SQL[RESOLVIDO]

5 respostas
brunorota

Ola galera
Eu tenho uma classe que realiza instruções SQL soh q esta dando erro em um SQL que eu não estou conseguindo encontrar

segue o código

a classe do banco

public class LoginDB {
	
	public int validarLogin(Login l){
		
		int cod = 0;
		
		System.out.println(l.getUser() +" - "+ l.getSenha());
		
		String sql = "SELECT cod FROM usuarios WHERE usuario = "+ l.getUser() +" AND senha = " + l.getSenha();		
		try{
			Connection conn = ConnectionDB.getConnection();
			Statement stm = conn.createStatement();
			ResultSet rset = stm.executeQuery(sql);
			
			while(rset.next()){
			
				cod = rset.getInt("cod");
				System.out.println(cod);
			}
		
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return cod;
	}

}

a classe que chama o método para realizar a instrução

if(e.getSource() == btn){
			
			Login l = new Login();
			l.setUser(txtUsuario.getText());
			l.setSenha(txtSenha.getText());
			
			System.out.println(l.getUser() + " - " + l.getSenha());
			
			int cod = new LoginDB().validarLogin(l);

o erro

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'bruno' in 'where clause'
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1386)
	at database.classes.LoginDB.validarLogin(LoginDB.java:21)
	at ClassesGUI.LoginGUI.mouseClicked(LoginGUI.java:95)
	at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
	at java.awt.Component.processMouseEvent(Component.java:6137)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5899)
	at java.awt.Container.processEvent(Container.java:2023)
	at java.awt.Component.dispatchEventImpl(Component.java:4501)
	at java.awt.Container.dispatchEventImpl(Container.java:2081)
	at java.awt.Component.dispatchEvent(Component.java:4331)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3974)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
	at java.awt.Container.dispatchEventImpl(Container.java:2067)
	at java.awt.Window.dispatchEventImpl(Window.java:2458)
	at java.awt.Component.dispatchEvent(Component.java:4331)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

table no banco

table usuarios(

cod int not null,
usuario varchar(20),
senha varchar(20),

A sql q eu uso eu testei no MySQL e funciona corretamente

Não sei oq esta acontecendo

Se alguem puder ajudar ficarei muito grato

Atenciosamente

5 Respostas

brunorota

o erro é com a entrada de dados “Bruno” para o usuario e “dh” para a senha

T

Imprima a string com o SQL para você ver onde está errando.

String sql = "SELECT cod FROM usuarios WHERE usuario = “+ l.getUser() +” AND senha = " + l.getSenha();

Acho que ele vai imprimir a seguinte string:

SELECT cod FROM usuarios WHERE usuario = bruno AND senha = dh

Não está faltando alguma coisa? Hein?

brunorota

ola thingol não esta faltando nada

Eu realizo essa SQL no MyQueryBrowser do Mysql ela funciona normalmente

Meu banco tem apenas 3 colunas

cod int primarykey
usuario varchar(20),
senha varchar(20),

A sel imprime certinho eu uso ela no MySQL e ela funciona corretamente

brunorota

Opa achei o erro

faltava eu colocar ‘bruno’ as aspas na String

A sql tem q funcionar assim SELECT cod FROM usuarios WHERE usuario = ‘bruno’ AND senha = ‘dh’

Eh q eu sou acostumado usar soh int para pesquisa e eu nunca precisei colocar as aspas
Pra inserir os dados eu uso o PreparedStatement

Tem como eu fazer um select usando o preparedStatment junto com o ResultSet?

Obrigado thingol pela atenção dada ao tópico

pmlm

brunorota:

Tem como eu fazer um select usando o preparedStatment junto com o ResultSet?

http://java.sun.com/javase/6/docs/api/java/sql/PreparedStatement.html#executeQuery()

Criado 24 de agosto de 2009
Ultima resposta 25 de ago. de 2009
Respostas 5
Participantes 3