class Database
Constants
- ResultSet
Public Class Methods
new(name)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 216 def initialize(name) raise ArgumentError, "Database name cannot be nil" unless name @name = name connect name end
Public Instance Methods
close()
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 281 def close @db = nil @tables = nil end
columns(table)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 232 def columns table raise ArgumentError, "#{$0}: table name cannot be nil" unless table columns, ignore = self.get_metadata table return columns end
connect(name)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 221 def connect name raise ArgumentError, "Database name cannot be nil" unless name @tables = nil @db = SQLite3::Database.new(name) end
execute_query(sql)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 270 def execute_query sql columns, *rows = @db.execute2(sql) content = rows return nil if content.nil? or content[0].nil? datatypes = content[0].types rs = ResultSet.new(content, columns, datatypes) return rs end
get_data(sql)
click to toggle source
runs sql query and returns an array of arrays
# File lib/cetusql/cli_sqlite.rb, line 262 def get_data sql #$log.debug "SQL: #{sql} " columns, *rows = @db.execute2(sql) #$log.debug "XXX COLUMNS #{sql}, #{rows.count} " content = rows return content end
Also aliased as: sql
get_metadata(table)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 252 def get_metadata table raise ArgumentError, "#{$0}: table name cannot be nil" unless table sql = "select * from #{table} limit 1" columns, *rows = @db.execute2(sql) content = rows return nil if content.nil? or content[0].nil? datatypes = content[0].types return columns, datatypes end
indexed_columns(table)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 237 def indexed_columns table indexes = sql %Q{select sql from sqlite_master where type='index' and tbl_name = "#{table}" } return nil if indexes == [] #pp indexes arr = [] indexes.each do |ind| if ind.first.nil? arr << "auto?" next end m = ind.first.match /\((.*)\)/ arr << m[1] if m end return arr.join(",") end
sql_recent_rows(tablename)
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 278 def sql_recent_rows tablename sql = "SELECT * from #{tablename} ORDER by rowid DESC LIMIT 100" end
tables()
click to toggle source
# File lib/cetusql/cli_sqlite.rb, line 226 def tables return @tables if @tables tables = sql "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name" tables.collect!{|x| x[0] } ## 1.9 hack, but will it run on 1.8 ?? @tables = tables end