| 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