Class: DataObject::Sqlite3::Command

Inherits:
Command
  • Object
show all
Defined in:
lib/do_sqlite3.rb

Instance Method Summary collapse

Instance Method Details

#execute_non_query(*args) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/do_sqlite3.rb', line 136

def execute_non_query(*args)
  super
  sql = escape_sql(args)
  @connection.logger.debug { sql }
  result, reader = Sqlite3_c.sqlite3_prepare_v2(@connection.db, sql, -1)
  unless result == Sqlite3_c::SQLITE_OK
    Sqlite3_c.sqlite3_finalize(reader)
    raise QueryError, "Your query failed.\n#{Sqlite3_c.sqlite3_errmsg(@connection.db)}\nQUERY: \"#{sql}\""
  else
    exec_result = Sqlite3_c.sqlite3_step(reader)
    Sqlite3_c.sqlite3_finalize(reader)
    if exec_result == Sqlite3_c::SQLITE_DONE
      ResultData.new(@connection, Sqlite3_c.sqlite3_changes(@connection.db), Sqlite3_c.sqlite3_last_insert_rowid(@connection.db))
    else
      raise QueryError, "Your query failed or you tried to execute a SELECT query through execute_non_reader\n#{Sqlite3_c.sqlite3_errmsg(@connection.db)}\nQUERY: \"#{@text}\""
    end
  end
end

#execute_reader(*args) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/do_sqlite3.rb', line 116

def execute_reader(*args)
  super
  sql = escape_sql(args)
  @connection.logger.debug { sql }
  result, ptr = Sqlite3_c.sqlite3_prepare_v2(@connection.db, sql, sql.size + 1)
  unless result == Sqlite3_c::SQLITE_OK
    raise QueryError, "Your query failed.\n#{Sqlite3_c.sqlite3_errmsg(@connection.db)}\nQUERY: \"#{sql}\""
  else
    reader = Reader.new(@connection.db, ptr)
    
    if block_given?
      return_value = yield(reader)
      reader.close
      return_value
    else
      reader
    end
  end
end

#quote_boolean(value) ⇒ Object



159
160
161
# File 'lib/do_sqlite3.rb', line 159

def quote_boolean(value)
  value ? '1' : '0'
end

#quote_symbol(value) ⇒ Object



155
156
157
# File 'lib/do_sqlite3.rb', line 155

def quote_symbol(value)
  value.to_s
end