All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.scalaquery.session.PositionedResult.scala Maven / Gradle / Ivy

package org.scalaquery.session

import java.sql.{ResultSet, Blob, Clob, Date, Time, Timestamp}
import org.scalaquery.simple.GetResult

/**
 * A database result positioned at a row and column.
 */
abstract class PositionedResult(val rs: ResultSet) extends java.io.Closeable {
  private[this] lazy val meta = rs.getMetaData()

  var pos = 0
  lazy val numColumns = meta.getColumnCount()

  def hasMoreColumns = pos+1 < numColumns
  def next() = { pos = 0; rs.next }

  def << [T](implicit f: GetResult[T]): T = f(this)
  def < rs.updateBoolean  (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateBlobOption(v: Option[Blob])           { val npos = pos + 1; v match { case Some(s) => rs.updateBlob     (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateByteOption(v: Option[Byte])           { val npos = pos + 1; v match { case Some(s) => rs.updateByte     (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateBytesOption(v: Option[Array[Byte]])   { val npos = pos + 1; v match { case Some(s) => rs.updateBytes    (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateClobOption(v: Option[Clob])           { val npos = pos + 1; v match { case Some(s) => rs.updateClob     (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateDateOption(v: Option[Date])           { val npos = pos + 1; v match { case Some(s) => rs.updateDate     (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateDoubleOption(v: Option[Double])       { val npos = pos + 1; v match { case Some(s) => rs.updateDouble   (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateFloatOption(v: Option[Float])         { val npos = pos + 1; v match { case Some(s) => rs.updateFloat    (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateIntOption(v: Option[Int])             { val npos = pos + 1; v match { case Some(s) => rs.updateInt      (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateLongOption(v: Option[Long])           { val npos = pos + 1; v match { case Some(s) => rs.updateLong     (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateShortOption(v: Option[Short])         { val npos = pos + 1; v match { case Some(s) => rs.updateShort    (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateStringOption(v: Option[String])       { val npos = pos + 1; v match { case Some(s) => rs.updateString   (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateTimeOption(v: Option[Time])           { val npos = pos + 1; v match { case Some(s) => rs.updateTime     (npos, s); case None => rs.updateNull(npos) }; pos = npos }
  def updateTimestampOption(v: Option[Timestamp]) { val npos = pos + 1; v match { case Some(s) => rs.updateTimestamp(npos, s); case None => rs.updateNull(npos) }; pos = npos }

  def skip = { pos += 1; this }
  def updateNull() { val npos = pos + 1; rs.updateNull(npos); pos = npos }

  /**
   * Close the ResultSet and the statement which created it.
   */
  def close(): Unit
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy