Sha256: bbcf95073b7e9bbb128cdff6e5e90beebc5ba092d926b081ce1f73e4fc4aa802

Contents?: true

Size: 1.23 KB

Versions: 6

Compression:

Stored size: 1.23 KB

Contents

module DuckDB
  # The DuckDB::Connection encapsulates connection with DuckDB database.
  #
  #   require 'duckdb'
  #   db = DuckDB::Database.open
  #   con = db.connect
  #   con.query(sql)
  class Connection
    #
    # executes sql with args.
    # The first argument sql must be SQL string.
    # The rest arguments are parameters of SQL string.
    # The parameters must be '?' in SQL statement.
    #
    #   require 'duckdb'
    #   db = DuckDB::Database.open('duckdb_file')
    #   con = db.connect
    #   users = con.query('SELECT * FROM users')
    #   sql = 'SELECT * FROM users WHERE name = ? AND email = ?'
    #   dave = con.query(sql, 'Dave', 'dave@example.com')
    #
    def query(sql, *args)
      return query_sql(sql) if args.empty?

      stmt = PreparedStatement.new(self, sql)
      args.each_with_index do |arg, i|
        stmt.bind(i + 1, arg)
      end
      stmt.execute
    end

    #
    # connects DuckDB database
    # The first argument is DuckDB::Database object
    #
    def connect(db)
      conn = _connect(db)
      return conn unless block_given?

      begin
        yield conn
      ensure
        conn.disconnect
      end
    end

    alias execute query
    alias open connect
    alias close disconnect
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
duckdb-0.0.12 lib/duckdb/connection.rb
duckdb-0.0.11 lib/duckdb/connection.rb
duckdb-0.0.10 lib/duckdb/connection.rb
duckdb-0.0.9 lib/duckdb/connection.rb
duckdb-0.0.8.1 lib/duckdb/connection.rb
duckdb-0.0.8 lib/duckdb/connection.rb