123456789_123456789_123456789_123456789_123456789_

Class: SQLite3::ResultSet

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
self, Enumerable
Inherits: Object
Defined in: lib/sqlite3/resultset.rb

Overview

The ResultSet object encapsulates the enumerability of a query’s output. It is a simple cursor over the data that the query returns. It will very rarely (if ever) be instantiated directly. Instead, clients should obtain a ResultSet instance via Statement#execute.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

  • #close

    Closes the statement that spawned this result set.

  • #columns

    Returns the names of the columns returned by this result set.

  • #each

    Required by the Enumerable mixin.

  • #each_hash

    Provides an internal iterator over the rows of the result set where each row is yielded as a hash.

  • #next

    Obtain the next row from the cursor.

  • #next_hash (also: #next)

    Return the next row as a hash.

  • #reset(*bind_params)

    Reset the cursor, so that a result set which has reached end-of-file can be rewound and reiterated.

  • #types

    Returns the types of the columns returned by this result set.

Constructor Details

.new(db, stmt) ⇒ ResultSet

Create a new ResultSet attached to the given database, using the given sql text.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 14

def initialize db, stmt
  @db = db
  @stmt = stmt
end

Instance Attribute Details

#closed?Boolean (readonly)

Queries whether the underlying statement has been closed or not.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 70

def closed?
  @stmt.closed?
end

#eof?Boolean (readonly)

Query whether the cursor has reached the end of the result set or not.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 27

def eof?
  @stmt.done?
end

Instance Method Details

#close

Closes the statement that spawned this result set. Use with caution! Closing a result set will automatically close any other result sets that were spawned from the same statement.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 65

def close
  @stmt.close
end

#columns

Returns the names of the columns returned by this result set.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 80

def columns
  @stmt.columns
end

#each

Required by the Enumerable mixin. Provides an internal iterator over the rows of the result set.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 48

def each
  while (node = self.next)
    yield node
  end
end

#each_hash

Provides an internal iterator over the rows of the result set where each row is yielded as a hash.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 56

def each_hash
  while (node = next_hash)
    yield node
  end
end

#next

Obtain the next row from the cursor. If there are no more rows to be had, this will return nil.

The returned value will be an array, unless Database#results_as_hash has been set to true, in which case the returned value will be a hash.

For arrays, the column names are accessible via the fields property, and the column types are accessible via the #types property.

For hashes, the column names are the keys of the hash, and the column types are accessible via the #types property.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 42

def next
  @stmt.step
end

#next_hash Also known as: #next

Return the next row as a hash

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 85

def next_hash
  row = @stmt.step
  return nil if @stmt.done?

  @stmt.columns.zip(row).to_h
end

#reset(*bind_params)

Reset the cursor, so that a result set which has reached end-of-file can be rewound and reiterated.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 21

def reset(*bind_params)
  @stmt.reset!
  @stmt.bind_params(*bind_params)
end

#types

Returns the types of the columns returned by this result set.

[ GitHub ]

  
# File 'lib/sqlite3/resultset.rb', line 75

def types
  @stmt.types
end