Class | Sequel::IBMDB::Database |
In: |
lib/sequel/adapters/ibmdb.rb
|
Parent: | Sequel::Database |
Create a new connection object for the given server.
# File lib/sequel/adapters/ibmdb.rb, line 188 188: def connect(server) 189: opts = server_opts(server) 190: 191: connection_params = if opts[:host].nil? && opts[:port].nil? && opts[:database] 192: # use a cataloged connection 193: opts.values_at(:database, :user, :password) 194: else 195: # use uncataloged connection so that host and port can be supported 196: 'Driver={IBM DB2 ODBC DRIVER};' \ 197: "Database=#{opts[:database]};" \ 198: "Hostname=#{opts[:host]};" \ 199: "Port=#{opts[:port] || 50000};" \ 200: 'Protocol=TCPIP;' \ 201: "Uid=#{opts[:user]};" \ 202: "Pwd=#{opts[:password]};" \ 203: end 204: 205: Connection.new(connection_params) 206: end
# File lib/sequel/adapters/ibmdb.rb, line 208 208: def execute(sql, opts=OPTS, &block) 209: if sql.is_a?(Symbol) 210: execute_prepared_statement(sql, opts, &block) 211: else 212: synchronize(opts[:server]){|c| _execute(c, sql, opts, &block)} 213: end 214: rescue Connection::Error => e 215: raise_error(e) 216: end
# File lib/sequel/adapters/ibmdb.rb, line 218 218: def execute_insert(sql, opts=OPTS) 219: synchronize(opts[:server]) do |c| 220: if sql.is_a?(Symbol) 221: execute_prepared_statement(sql, opts) 222: else 223: _execute(c, sql, opts) 224: end 225: _execute(c, "SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1", opts){|stmt| i = stmt.fetch_array.first.to_i; i} 226: end 227: rescue Connection::Error => e 228: raise_error(e) 229: end
Execute a prepared statement named by name on the database.
# File lib/sequel/adapters/ibmdb.rb, line 232 232: def execute_prepared_statement(ps_name, opts) 233: args = opts[:arguments] 234: ps = prepared_statement(ps_name) 235: sql = ps.prepared_sql 236: synchronize(opts[:server]) do |conn| 237: unless conn.prepared_statements.fetch(ps_name, []).first == sql 238: log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)} 239: end 240: args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)} 241: log_sql = "EXECUTE #{ps_name}" 242: if ps.log_sql 243: log_sql += " (" 244: log_sql << sql 245: log_sql << ")" 246: end 247: begin 248: stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)} 249: if block_given? 250: yield(stmt) 251: else 252: stmt.affected 253: end 254: ensure 255: stmt.free_result if stmt 256: end 257: end 258: end