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
-
.new(db, stmt) ⇒ ResultSet
constructor
Create a new
ResultSet
attached to the given database, using the given sql text.
Instance Attribute Summary
-
#closed? ⇒ Boolean
readonly
Queries whether the underlying statement has been closed or not.
-
#eof? ⇒ Boolean
readonly
Query whether the cursor has reached the end of the result set or not.
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.
# 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.
# 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.
# 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.
# File 'lib/sqlite3/resultset.rb', line 65
def close @stmt.close end
#columns
Returns the names of the columns returned by this result set.
# 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.
# 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.
# 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.
# 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
# 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.
# 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.
# File 'lib/sqlite3/resultset.rb', line 75
def types @stmt.types end