java - JDBC 5 + MYSQL 4 error on select -
i'm new in java world , i'm trying create userexist
method check if user exists. well, i'm getting error: java.sql.sqlexception: resultset update. no data.
this error happens when login or password doesn't exist. , next
returns false
.
i'm using mysql jdbc 5 mysql 4
the code:
public boolean userexist(user entereduser) { try { boolean userexist = false; preparedstatement connquery = this.connection.preparestatement("select codigo, nome, login, senha funcionario login='"+entereduser.getlogin()+"' , senha='"+entereduser.getsenha()+"'"); resultset result = connquery.executequery(); if(result.next()) { if((result.getstring("login") == entereduser.getlogin())&&(result.getstring("senha") == entereduser.getsenha())) { entereduser.setid(result.getint("codigo")); entereduser.setnome(result.getstring("nome")); userexist = true; } } connquery.close(); return userexist; } catch (sqlexception error) { throw new runtimeexception(error); } }
edited.
i changed code, i'm getting error in second time tried log on application. can logical error?
public boolean userexist(user entereduser) { try { boolean userexist = false; preparedstatement query = this.connection.preparestatement("select codigo, nome, login, senha funcionario login=? , senha=?"); query.setstring(1,entereduser.getlogin()); query.setstring(2,entereduser.getsenha()); resultset result = query.executequery(); if(result.next()) { if((result.getstring("login").equals(entereduser.getlogin()))&&(result.getstring("senha").equals(entereduser.getsenha()))) { entereduser.setcodigo(result.getint("codigo")); entereduser.setnome(result.getstring("nome")); userexist = true; } } result.close(); query.close(); return userexist; } catch (sqlexception error) { throw new runtimeexception(error); } }
thank you,
although above method isn't straightforwardly vulnerable sql injection, damn close. try parameters:
preparedstatement connquery = this.connection.preparestatement("select codigo, nome, login, senha funcionario login=? , senha=?"); connquery.setstring(1,entereduser.getlogin()); connquery.setstring(2,entereduser.getsenha());
also, try declaring result set , prepared statement outside try block can close them in block.
as actual question, i'd try running execute instead of executequery
Comments
Post a Comment