Class: SQLite::Statement

### Home Classes Methods

### In Files

- lib/sqlite/statement.rb

### Parent

Object

### Methods

- ::new
- #bind_param
- #bind_params
- #columns
- #execute
- #execute!
- #types

### Files

- README

### Class/Module Index

Quicksearch

- SQLite
- SQLite::API
- SQLite::Database
- SQLite::Database::FunctionProxy
- SQLite::Exceptions
- SQLite::Exceptions::AbortException
- SQLite::Exceptions::AuthorizationException
- SQLite::Exceptions::BusyException
- SQLite::Exceptions::CantOpenException
- SQLite::Exceptions::ConstraintException
- SQLite::Exceptions::CorruptException
- SQLite::Exceptions::DatabaseException
- SQLite::Exceptions::EmptyException
- SQLite::Exceptions::FormatException
- SQLite::Exceptions::FullException
- SQLite::Exceptions::IOErrorException
- SQLite::Exceptions::InternalException
- SQLite::Exceptions::InterruptException
- SQLite::Exceptions::LockedException
- SQLite::Exceptions::MismatchException
- SQLite::Exceptions::MisuseException
- SQLite::Exceptions::NotADatabaseException
- SQLite::Exceptions::NotFoundException
- SQLite::Exceptions::OutOfMemoryException
- SQLite::Exceptions::PermissionsException
- SQLite::Exceptions::ProtocolException
- SQLite::Exceptions::RangeException
- SQLite::Exceptions::ReadOnlyException
- SQLite::Exceptions::SQLException
- SQLite::Exceptions::SchemaChangedException
- SQLite::Exceptions::TooBigException
- SQLite::Exceptions::UnsupportedOSFeatureException
- SQLite::ParsedStatement
- SQLite::Pragmas
- SQLite::ResultSet
- SQLite::ResultSet::FieldsContainer
- SQLite::ResultSet::TypesContainer
- SQLite::Statement
- SQLite::Translator
- SQLite::Version

No matching classes.

# SQLite::Statement

A statement represents a prepared-but-unexecuted SQL query. It will rarely (if ever) be instantiated directly by a client, and is most often obtained via the Database#prepare method.

### Attributes

remainder[R]

This is any text that followed the first valid SQL statement in the text with which the statement was initialized. If there was no trailing text, this will be the empty string.

### Public Class Methods

new( db, sql ) click to toggle source

Create a new statement attached to the given Database instance, and which encapsulates the given SQL text. If the text contains more than one statement (i.e., separated by semicolons), then the remainder property will be set to the trailing text.

    # File lib/sqlite/statement.rb, line 53
    def initialize( db, sql )
      @db = db
      @statement = ParsedStatement.new( sql )
      @remainder = @statement.trailing.strip
      @sql = @statement.to_s
    end

### Public Instance Methods

bind_param( param, value ) click to toggle source

Binds value to the named (or positional) placeholder. If `param` is a Fixnum, it is treated as an index for a positional placeholder. Otherwise it is used as the name of the placeholder to bind to.

See also bind_params.

    # File lib/sqlite/statement.rb, line 82
    def bind_param( param, value )
      @statement.bind_param( param, value )
    end

bind_params( *bind_vars ) click to toggle source

Binds the given variables to the corresponding placeholders in the SQL text.

See Database#execute for a description of the valid placeholder syntaxes.

Example:

    stmt = db.prepare( "select * from table where a=? and b=?" )
    stmt.bind_params( 15, "hello" )

See also execute, bind_param, Statement#bind_param, and Statement#bind_params.

    # File lib/sqlite/statement.rb, line 73
    def bind_params( *bind_vars )
      @statement.bind_params( *bind_vars )
    end

columns() click to toggle source

Return an array of the column names for this statement. Note that this may execute the statement in order to obtain the metadata; this makes it a (potentially) expensive operation.

    # File lib/sqlite/statement.rb, line 149
    def columns
      get_metadata unless @columns
      return @columns
    end

execute( *bind_vars ) click to toggle source

Execute the statement. This creates a new ResultSet object for the statement's virtual machine. If a block was given, the new ResultSet will be yielded to it and then closed; otherwise, the ResultSet will be returned. In that case, it is the client's responsibility to close the ResultSet.

Any parameters will be bound to the statement using bind_params.

Example:

    stmt = db.prepare( "select * from table" )
    stmt.execute do |result|
      ...
    end

See also bind_params, execute!.

    # File lib/sqlite/statement.rb, line 102
    def execute( *bind_vars )
      bind_params *bind_vars unless bind_vars.empty?
      results = ResultSet.new( @db, @statement.to_s )

      if block_given?
        begin
          yield results
        ensure
          results.close
        end
      else
        return results
      end
    end

execute!( *bind_vars ) click to toggle source

Execute the statement. If no block was given, this returns an array of rows returned by executing the statement. Otherwise, each row will be yielded to the block and then closed.

Any parameters will be bound to the statement using bind_params.

Example:

    stmt = db.prepare( "select * from table" )
    stmt.execute! do |row|
      ...
    end

See also bind_params, execute.

    # File lib/sqlite/statement.rb, line 131
    def execute!( *bind_vars )
      result = execute( *bind_vars )
      rows = [] unless block_given?
      while row = result.next
        if block_given?
          yield row
        else
          rows << row
        end
      end
      rows
    ensure
      result.close if result
    end

types() click to toggle source

Return an array of the data types for each column in this statement. Note that this may execute the statement in order to obtain the metadata; this makes it a (potentially) expensive operation.

    # File lib/sqlite/statement.rb, line 157
    def types
      get_metadata unless @types
      return @types
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.