Class: Sequel::IBMDB::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel/adapters/ibmdb.rb

Overview

Wraps an underlying connection to DB2 using IBM_DB.

Defined Under Namespace

Classes: Error

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection_string) ⇒ Connection

Create the underlying IBM_DB connection.



41
42
43
44
45
# File 'lib/sequel/adapters/ibmdb.rb', line 41

def initialize(connection_string)
  @conn = IBM_DB.connect(connection_string, '', '')
  self.autocommit = true
  @prepared_statements = {}
end

Instance Attribute Details

#prepared_statementsObject

A hash with prepared statement name symbol keys, where each value is a two element array with an sql string and cached Statement value.



34
35
36
# File 'lib/sequel/adapters/ibmdb.rb', line 34

def prepared_statements
  @prepared_statements
end

Instance Method Details

#autocommitObject

Check whether the connection is in autocommit state or not.



48
49
50
# File 'lib/sequel/adapters/ibmdb.rb', line 48

def autocommit
  IBM_DB.autocommit(@conn) == 1
end

#autocommit=(value) ⇒ Object

Turn autocommit on or off for the connection.



53
54
55
# File 'lib/sequel/adapters/ibmdb.rb', line 53

def autocommit=(value)
  IBM_DB.autocommit(@conn, value ? IBM_DB::SQL_AUTOCOMMIT_ON : IBM_DB::SQL_AUTOCOMMIT_OFF)
end

#closeObject

Close the connection, disconnecting from DB2.



58
59
60
# File 'lib/sequel/adapters/ibmdb.rb', line 58

def close
  IBM_DB.close(@conn)
end

#commitObject

Commit the currently outstanding transaction on this connection.



63
64
65
# File 'lib/sequel/adapters/ibmdb.rb', line 63

def commit
  IBM_DB.commit(@conn)
end

#error_msgObject

Return the related error message for the connection.



68
69
70
# File 'lib/sequel/adapters/ibmdb.rb', line 68

def error_msg
  IBM_DB.getErrormsg(@conn, IBM_DB::DB_CONN)
end

#execute(sql) ⇒ Object

Execute the given SQL on the database, and return a Statement instance holding the results.

Raises:



74
75
76
77
78
# File 'lib/sequel/adapters/ibmdb.rb', line 74

def execute(sql)
  stmt = IBM_DB.exec(@conn, sql)
  raise Error, error_msg unless stmt
  Statement.new(stmt)
end

#execute_prepared(ps_name, *values) ⇒ Object

Execute the related prepared statement on the database with the given arguments.



82
83
84
85
86
87
88
89
# File 'lib/sequel/adapters/ibmdb.rb', line 82

def execute_prepared(ps_name, *values)
  stmt = @prepared_statements[ps_name].last
  res = stmt.execute(*values)
  unless res
    raise Error, "Error executing statement #{ps_name}: #{error_msg}"
  end
  stmt
end

#prepare(sql, ps_name) ⇒ Object

Prepare a statement with the given sql on the database, and cache the prepared statement value by name.



93
94
95
96
97
98
99
100
101
102
103
# File 'lib/sequel/adapters/ibmdb.rb', line 93

def prepare(sql, ps_name)
  if stmt = IBM_DB.prepare(@conn, sql)
    ps_name = ps_name.to_sym
    stmt = Statement.new(stmt)
    @prepared_statements[ps_name] = [sql, stmt]
  else
    err = error_msg
    err = "Error preparing #{ps_name} with SQL: #{sql}" if error_msg.nil? || error_msg.empty?
    raise Error, err
  end
end

#rollbackObject

Rollback the currently outstanding transaction on this connection.



106
107
108
# File 'lib/sequel/adapters/ibmdb.rb', line 106

def rollback
  IBM_DB.rollback(@conn)
end