Mark Hiles wrote:
I did both ways of testing to see if my resultset is null, which it isn't.

I can't upload the actual class I'm working on, I don't want the uni to accuse
me of getting other people to do my code.. I'll type up something along the same
lines, if someone could point me in the right direction of what I'm doing 
wrong..

Hello Mark,

I haven't followed this thread closely, but I just want to comment on a few things.

First of all, provide the stack trace (including line numbers) if you get an exception. This makes it a lot easier for others to help you.
The worst thing to do, is catching exceptions and ignoring them silently.

See some of my comments inlined below.


private ArrayList getSomeResults(String constraint) {
  ArrayList<ArrayList> outerArrLst = new ArrayList<ArrayList>();
  ArrayList<String> innerArrLst = new ArrayList<String>();

  try {
    rs = stmt.executeQuery("select field1, field2 from tablename where field3 =
'" + constraint + "'");

You should most likely use a PreparedStatement for this, along the lines of:

PreparedStatement ps = connection.prepareStatement("select field1, fields2 from tablename where field3 = ?");
ps.setString(1, constraint);
ResultSet rs = ps.executeQuery();
// process rs
rs.close();

If possible you should save the prepared statement reference so you don't have to prepare it all over again each time. Prepared statements are supposed to be reused.


    while(rs.next()) {
            innerArrLst.add(rs.getString("field1"));
            innerArrLst.add(rs.getString("field2"));
            outerArrLst.add(innerArrLst);

To me this looks like you are adding the same list once for each row in the result set. Your inner list will end up with field1 and field2 for all your rows, and the outer list will contain number-of-rows-in-rs elements, all referring to the same inner list.

    }
  } catch (Exception e) {e.printStackTrace();}

Be careful about catching Exception.
In this case I think you should consider what you can do with SQLException, a finally block and a throws clause for the method. There are multiple options for handling exceptions in this method, the best one depends on your needs.


  rs.close();
  rs = null;

No need for the rs = null here, it's a local variable and it's going out of scope.


Just a few comments :)

regards,
--
Kristian


  return outerArrLst;
}


Reply via email to