Object
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, client’s should obtain a ResultSet instance via Statement#execute.
Create a new ResultSet attached to the given database, using the given sql text.
# File lib/sqlite3/resultset.rb, line 34 34: def initialize db, stmt 35: @db = db 36: @stmt = stmt 37: end
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 105 105: def close 106: @stmt.close 107: end
Queries whether the underlying statement has been closed or not.
# File lib/sqlite3/resultset.rb, line 110 110: def closed? 111: @stmt.closed? 112: end
Returns the names of the columns returned by this result set.
# File lib/sqlite3/resultset.rb, line 120 120: def columns 121: @stmt.columns 122: end
Required by the Enumerable mixin. Provides an internal iterator over the rows of the result set.
# File lib/sqlite3/resultset.rb, line 96 96: def each( &block ) 97: while node = self.next 98: yield node 99: end 100: end
Query whether the cursor has reached the end of the result set or not.
# File lib/sqlite3/resultset.rb, line 48 48: def eof? 49: @stmt.done? 50: end
Obtain the next row from the cursor. If there are no more rows to be had, this will return nil. If type translation is active on the corresponding database, the values in the row will be translated according to their types.
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 65 65: def next 66: row = @stmt.step 67: return nil if @stmt.done? 68: 69: if @db.type_translation 70: row = @stmt.types.zip(row).map do |type, value| 71: @db.translator.translate( type, value ) 72: end 73: end 74: 75: if @db.results_as_hash 76: new_row = HashWithTypes[*@stmt.columns.zip(row).flatten] 77: row.each_with_index { |value,idx| 78: new_row[idx] = value 79: } 80: row = new_row 81: else 82: if row.respond_to?(:fields) 83: row = ArrayWithTypes.new(row) 84: else 85: row = ArrayWithTypesAndFields.new(row) 86: end 87: row.fields = @stmt.columns 88: end 89: 90: row.types = @stmt.types 91: row 92: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.