Sha256: 3418b64f9df19871a3c10cf5c218a1c11e97ff84cec4a74edf1476771d70b5a5
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
module KVM module Db class JdbcAdapter DB_DRIVERS = { 'oracle' => 'oracle.jdbc.driver.OracleDriver', 'mysql' => 'com.mysql.jdbc.Driver' } def initialize(db_config) ensure_jruby @db_config = db_config @driver_jar = db_config.jar load_driver end def execute_update(sqls) for sql in sqls with_statement do |stmt| next unless sql and sql.length > 0 KVM::LOG.info("Executing statement: " + sql) stmt.executeUpdate(sql) end end end protected def with_statement with_connection do |con| stmt = con.createStatement begin yield stmt ensure stmt.close end end end def with_connection con = jdbc_connect begin yield con ensure con.close end end def jdbc_connect # load the jdbc driver Java::JavaClass.for_name(DB_DRIVERS[@db_config.db_type]) props = java.util.Properties.new props.setProperty("user", @db_config.username) props.setProperty("password", @db_config.password) # special case to automatically log in as sysdba when using 'sys' username props.setProperty("internal_logon", "sysdba") if @db_config.db_type == 'oracle' and @db_config.username == 'sys' java.sql.DriverManager.getConnection(@db_config.url, props) end def ensure_jruby raise "This command must be run under JRuby" unless defined? JRUBY_VERSION end def load_driver raise "Please specify the driver jar in the 'jar' property" unless @driver_jar # jrubiness follows... require 'java' require @driver_jar end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kvm-0.0.1.pre | lib/kvm/db/jdbc_adapter.rb |