Module: Sequel::JDBC

Defined in:
lib/sequel/adapters/jdbc.rb,
lib/sequel/adapters/jdbc/h2.rb,
lib/sequel/adapters/jdbc/db2.rb,
lib/sequel/adapters/jdbc/jtds.rb,
lib/sequel/adapters/jdbc/as400.rb,
lib/sequel/adapters/jdbc/derby.rb,
lib/sequel/adapters/jdbc/mssql.rb,
lib/sequel/adapters/jdbc/mysql.rb,
lib/sequel/adapters/jdbc/hsqldb.rb,
lib/sequel/adapters/jdbc/oracle.rb,
lib/sequel/adapters/jdbc/sqlite.rb,
lib/sequel/adapters/jdbc/firebird.rb,
lib/sequel/adapters/jdbc/informix.rb,
lib/sequel/adapters/jdbc/sqlserver.rb,
lib/sequel/adapters/jdbc/postgresql.rb,
lib/sequel/adapters/jdbc/transactions.rb

Overview

Houses Sequel’s JDBC support when running on JRuby.

Defined Under Namespace

Modules: AS400, DB2, Derby, Firebird, H2, HSQLDB, Informix, JTDS, JavaLang, JavaSQL, JavaxNaming, MSSQL, MySQL, Oracle, Postgres, SQLServer, SQLite, Transactions Classes: Database, Dataset

Constant Summary collapse

JNDI_URI_REGEXP =

Used to identify a jndi connection and to extract the jndi resource name.

/\Ajdbc:jndi:(.+)/
DECIMAL_TYPE_RE =

The types to check for 0 scale to transform :decimal types to :integer.

/number|numeric|decimal/io
DATABASE_SETUP =

Contains procs keyed on sub adapter type that extend the given database object so it supports the correct database type.

{:postgresql=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/postgresql'
    db.extend(Sequel::JDBC::Postgres::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::Postgres::Dataset
    JDBC.load_gem('postgres')
    org.postgresql.Driver
  end,
  :mysql=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/mysql'
    db.extend(Sequel::JDBC::MySQL::DatabaseMethods)
    db.extend_datasets Sequel::MySQL::DatasetMethods
    JDBC.load_gem('mysql')
    com.mysql.jdbc.Driver
  end,
  :sqlite=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/sqlite'
    db.extend(Sequel::JDBC::SQLite::DatabaseMethods)
    db.extend_datasets Sequel::SQLite::DatasetMethods
    db.set_integer_booleans
    JDBC.load_gem('sqlite3')
    org.sqlite.JDBC
  end,
  :oracle=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/oracle'
    db.extend(Sequel::JDBC::Oracle::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::Oracle::Dataset
    Java::oracle.jdbc.driver.OracleDriver
  end,
  :sqlserver=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/sqlserver'
    db.extend(Sequel::JDBC::SQLServer::DatabaseMethods)
    db.extend_datasets Sequel::MSSQL::DatasetMethods
    db.send(:set_mssql_unicode_strings)
    com.microsoft.sqlserver.jdbc.SQLServerDriver
  end,
  :jtds=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/jtds'
    db.extend(Sequel::JDBC::MSSQL::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::JTDS::Dataset
    db.send(:set_mssql_unicode_strings)
    JDBC.load_gem('jtds')
    Java::net.sourceforge.jtds.jdbc.Driver
  end,
  :h2=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/h2'
    db.extend(Sequel::JDBC::H2::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::H2::Dataset
    JDBC.load_gem('h2')
    org.h2.Driver
  end,
  :hsqldb=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/hsqldb'
    db.extend(Sequel::JDBC::HSQLDB::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::HSQLDB::Dataset
    # Current gem is 1.8.1.3, but Sequel supports 2.2.5
    org.hsqldb.jdbcDriver
  end,
  :derby=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/derby'
    db.extend(Sequel::JDBC::Derby::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::Derby::Dataset
    JDBC.load_gem('derby')
    org.apache.derby.jdbc.EmbeddedDriver
  end,
  :as400=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/as400'
    db.extend(Sequel::JDBC::AS400::DatabaseMethods)
    db.dataset_class = Sequel::JDBC::AS400::Dataset
    com.ibm.as400.access.AS400JDBCDriver
  end,
  :"informix-sqli"=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/informix'
    db.extend(Sequel::JDBC::Informix::DatabaseMethods)
    db.extend_datasets Sequel::Informix::DatasetMethods
    com.informix.jdbc.IfxDriver
  end,
  :db2=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/db2'
    db.extend(Sequel::JDBC::DB2::DatabaseMethods)
    db.extend_datasets Sequel::DB2::DatasetMethods
    com.ibm.db2.jcc.DB2Driver
  end,
  :firebirdsql=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/firebird'
    db.extend(Sequel::JDBC::Firebird::DatabaseMethods)
    db.extend_datasets Sequel::Firebird::DatasetMethods
    org.firebirdsql.jdbc.FBDriver
  end
}

Class Method Summary collapse

Class Method Details

.load_gem(name) ⇒ Object

Allowing loading the necessary JDBC support via a gem, which works for PostgreSQL, MySQL, and SQLite.



124
125
126
127
128
129
130
# File 'lib/sequel/adapters/jdbc.rb', line 124

def self.load_gem(name)
  begin
    Sequel.tsk_require "jdbc/#{name}"
  rescue LoadError
    # jdbc gem not used, hopefully the user has the .jar in their CLASSPATH
  end
end