title: Treating an SQL ResultSet like a Scala Stream
body: <p>When I query a database and receive a (forward-only, read-only) ResultSet back, the ResultSet acts like a list of database rows.</p>
  
  <p>I am trying to find some way to treat this ResultSet like a Scala <code>Stream</code>. This will allow such operations as <code>filter</code>, <code>map</code>, etc., while not consuming large amounts of RAM.</p>
  
  <p>I implemented a tail-recursive method to extract the individual items, but this requires that all items be in memory at the same time, a problem if the ResultSet is very large:</p>
  
  <pre><code>// Iterate through the result set and gather all of the String values into a list
  // then return that list
  @tailrec
  def loop(resultSet: ResultSet,
           accumulator: List[String] = List()): List[String] = {
    if (!resultSet.next) accumulator.reverse
    else {
      val value = resultSet.getString(1)
      loop(resultSet, value +: accumulator)
    }
  }
  </code></pre>