class SQLite3::Database
Attributes
logging[RW]
Public Class Methods
new(filename)
click to toggle source
# File lib/motion-sqlite3/database.rb, line 5 def initialize(filename) @handle = Pointer.new(::Sqlite3.type) @logging = false result = sqlite3_open(filename, @handle) raise SQLite3Error, sqlite3_errmsg(@handle.value_with_autorelease) if result != SQLITE_OK end
Public Instance Methods
execute(sql, params = nil) { |result| ... }
click to toggle source
# File lib/motion-sqlite3/database.rb, line 13 def execute(sql, params = nil, &block) raise ArgumentError if sql.nil? if @logging puts " SQL: #{sql}" puts "Params: #{params}" if params && ! params.empty? end prepare(sql, params) do |statement| results = statement.execute if block_given? results.each do |result| yield result end else rows = [] results.each do |result| rows << result end rows end end end
execute_scalar(*args)
click to toggle source
# File lib/motion-sqlite3/database.rb, line 40 def execute_scalar(*args) execute(*args).first.values.first end
transaction() { || ... }
click to toggle source
# File lib/motion-sqlite3/database.rb, line 44 def transaction(&block) execute("BEGIN TRANSACTION") begin result = yield rescue execute("ROLLBACK TRANSACTION") raise end execute("COMMIT TRANSACTION") result end
Private Instance Methods
prepare(sql, params) { |statement| ... }
click to toggle source
# File lib/motion-sqlite3/database.rb, line 61 def prepare(sql, params, &block) statement = Statement.new(@handle, sql, params) result = nil begin result = yield statement ensure statement.finalize end result end