java - JDBC returning empty result set -
i'm using jdbc simple database connectivity.
i have created connection/statement , executed query. check query object of statement in debugger confirm sending proper query. double checked query (copied straight debugger) on database make sure returns data. returned resultset, however, gives false on .next()
are there common pitfalls here i'm missing?
public list<interestgroup> getgroups() { mydb.sendquery("select distinct group_name group_members username='" + this.username + "'"); resultset results = mydb.getresults(); list<interestgroup> returnlist = new arraylist<interestgroup>(); try { while (results.next()) { returnlist.add(new interestgroup(results.getstring("group_name"), mydb)); } return returnlist; } catch (sqlexception e) { e.printstacktrace(); return null; } } and mydb class (simple wrapper lets me drop connection/statement code project)
public void sendquery(string query){ this.query = query; try { if(statement == null){ statement = connection.createstatement(); } results = statement.executequery(query); } catch (sqlexception e) { system.out.println(query); currenterror = e; results = null; printerror(e, "querying"); } } public resultset getresults(){ return results; } edit: based on suggestions have revamped code still have same problem. below simplified portion of code has same problem.
private boolean attemptlogin(string uname, string pword) { resultset results; try{ try { class.forname("oracle.jdbc.driver.oracledriver"); } catch (classnotfoundexception e) { e.printstacktrace(); } connection =drivermanager.getconnection(connectionstring,user,password); preparedstatement statement = connection.preparestatement("select username users username='testuser'"); results = statement.executequery(); if(results != null && results.next()){ system.out.println("found result"); statement.close(); return true; } system.out.println("did not find result"); statement.close(); return false; }catch(sqlexception e){ e.printstacktrace(); return false; } } i have hardcoded query in place eliminate source of error. same problem before (this happens queries). debugger shows objects getting instantiated , no stack traces printed. furthermore, able use same code (and more complicated code listed previously) in different project.
i figured out....stupid oracle didn't number of concurrent connections had (all 2 of them, 1 console, 1 java). unfortunately, server not under control have deal it. think oracle provide better response. instead returned empty result sets.
thanks responses
edit since asked/answered there have been number of people pointed out underlying cause more related commit/transaction settings in use. please sure see other answers additional hints , possible solutions.
Comments
Post a Comment