Class: FluidDb2::Firebird
Overview
Firebird
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#begin ⇒ Object
Transaction Semantics.
- #close ⇒ Object
-
#commit ⇒ Object
Transaction Semantics.
-
#connect ⇒ Object
Connect to Db.
- #exec_params(sql, params, expected_affected_rows = nil) ⇒ Object
- #execute(sql, params = [], expected_affected_rows = nil) ⇒ Object
- #insert(_sql, _params) ⇒ Object
- #query_for_array(sql, params = []) ⇒ Object
- #query_for_resultset(sql, params = []) ⇒ Object
- #query_for_value(sql, params = []) ⇒ Object
-
#rollback ⇒ Object
Transaction Semantics.
Methods inherited from Base
#initialize, #reconnect, #verbose_log
Constructor Details
This class inherits a constructor from FluidDb2::Base
Instance Method Details
#begin ⇒ Object
Transaction Semantics
112 113 114 |
# File 'lib/fluiddb2/firebird.rb', line 112 def begin @connection.transaction end |
#close ⇒ Object
33 34 35 |
# File 'lib/fluiddb2/firebird.rb', line 33 def close @connection.close end |
#commit ⇒ Object
Transaction Semantics
117 118 119 |
# File 'lib/fluiddb2/firebird.rb', line 117 def commit @connection.commit end |
#connect ⇒ Object
Connect to Db.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/fluiddb2/firebird.rb', line 12 def connect uri = @uri user = uri.user || 'sysdba' password = uri.password || 'masterkey' port = uri.port || 3050 path = uri.path path = path.slice(1, uri.path.length - 1) if path.slice(0, 3) == '/C:' path = URI.unescape(path) # The Database class acts as a factory for Connections. # It can also create and drop databases. db = Database.new(:database => "#{uri.host}/#{port}:#{path}", :username => user, :password => password) # :database is the only parameter without a default. # Let's connect to the database, creating it if it doesn't already exist. @connection = db.connect rescue db.create.connect end |
#exec_params(sql, params, expected_affected_rows = nil) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/fluiddb2/firebird.rb', line 92 def exec_params(sql, params, expected_affected_rows = nil) parts = sql.split('?') sql = '' parts.each_with_index do |p, idx| sql += p sql += "$#{idx + 1}" if idx < parts.length - 1 end affected_rows = @connection.exec_params(sql, params) if !expected_affected_rows.nil? && affected_rows != expected_affected_rows fail ExpectedAffectedRowsError, "Expected affected rows, #{expected_affected_rows}, Actual affected rows, #{affected_rows}" end end |
#execute(sql, params = [], expected_affected_rows = nil) ⇒ Object
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/fluiddb2/firebird.rb', line 81 def execute(sql, params = [], expected_affected_rows = nil) sql = format_to_sql(sql, params) verbose_log "#{self.class.name}.execute. #{sql}" affected_rows = @connection.execute(sql) if !expected_affected_rows.nil? && affected_rows != expected_affected_rows fail ExpectedAffectedRowsError, "Expected affected rows, #{expected_affected_rows}, Actual affected rows, #{affected_rows}" end end |
#insert(_sql, _params) ⇒ Object
107 108 109 |
# File 'lib/fluiddb2/firebird.rb', line 107 def insert(_sql, _params) fail 'Firebird uses SEQUENCES, so possibly easier to use 2 executes' end |
#query_for_array(sql, params = []) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/fluiddb2/firebird.rb', line 37 def query_for_array(sql, params = []) sql = format_to_sql(sql, params) list = @connection.query(:hash, sql) case list.length when -1 fail FluidDb2::ConnectionError when 0 fail FluidDb2::NoDataFoundError when 1 return list[0] else fail FluidDb2::TooManyRowsError end end |
#query_for_resultset(sql, params = []) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/fluiddb2/firebird.rb', line 69 def query_for_resultset(sql, params = []) sql = format_to_sql(sql, params) list = @connection.query(:hash, sql) case list.length when -1 fail FluidDb::ConnectionError else return list end end |
#query_for_value(sql, params = []) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/fluiddb2/firebird.rb', line 53 def query_for_value(sql, params = []) sql = format_to_sql(sql, params) results = @connection.query(sql) case results.length when -1 fail FluidDb::ConnectionError when 0 fail FluidDb::NoDataFoundError when 1 return results[0][0] else fail FluidDb::TooManyRowsError end end |
#rollback ⇒ Object
Transaction Semantics
122 123 124 |
# File 'lib/fluiddb2/firebird.rb', line 122 def rollback @connection.rollback end |