Class: JDBC::PreparedStatementBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/jdbc/prepared_statement_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(statement:, binding_values:) ⇒ PreparedStatementBuilder

Returns a new instance of PreparedStatementBuilder.



3
4
5
6
# File 'lib/jdbc/prepared_statement_builder.rb', line 3

def initialize(statement:, binding_values:)
  @statement = statement
  @binding_values = binding_values
end

Class Method Details

.for_command(connection:, jdbc_sql:, binding_values:) ⇒ Object



8
9
10
11
12
13
# File 'lib/jdbc/prepared_statement_builder.rb', line 8

def self.for_command(connection:, jdbc_sql:, binding_values:)
  new(
    statement: connection.prepare_statement(jdbc_sql, java.sql.Statement::RETURN_GENERATED_KEYS),
    binding_values: binding_values
  ).build
end

.for_query(connection:, jdbc_sql:, binding_values:) ⇒ Object



15
16
17
18
19
20
# File 'lib/jdbc/prepared_statement_builder.rb', line 15

def self.for_query(connection:, jdbc_sql:, binding_values:)
  new(
    statement: connection.prepare_statement(jdbc_sql),
    binding_values: binding_values
  ).build
end

Instance Method Details

#buildObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jdbc/prepared_statement_builder.rb', line 22

def build
  binding_values.each_with_index do |(value, type), index|
    method_name, method_parameters = ParameterSetter.new(
      index: index,
      value: value,
      type: type
    ).build

    statement.public_send(method_name, *method_parameters)
  end

  statement
end