Sha256: 21e2a5ac345252c9f6e52faadcb3a652182860f5892773f84e69e5bf855976e2

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require "java"
java_import "java.sql.DriverManager"
java_import "org.apache.commons.lang.StringEscapeUtils"

class MysqlIsolatedServer
  class WrappedJDBCConnection
    def initialize(port)
      @cx ||= DriverManager.get_connection("jdbc:mysql://127.0.0.1:#{port}/mysql", "root", "")
    end

    def query(sql)
      stmt = @cx.create_statement
      if sql !~ /^select/i && sql !~ /^show/i
        return stmt.execute(sql)
      end

      rs = stmt.execute_query(sql)
      while (rs.next)
        rows = []
        meta_data = rs.get_meta_data
        num_cols = meta_data.get_column_count

        row = {}
        1.upto(num_cols) do |col|
          col_name = meta_data.get_column_label(col)
          col_value = rs.get_object(col) # of meta_data.get_column_type(col)

          row[col_name] = col_value if col_value # skip if nil
        end

        rows << row
      end
      rows
    ensure
      stmt.close if stmt
      rs.close if rs
    end

    def escape(str)
      StringEscapeUtils.escapeSql(str)
    end
  end

  module DBConnection
    def connection
      @connection ||= WrappedJDBCConnection.new(@port)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mysql_isolated_server-0.3.1 lib/mysql_isolated_server/jdbc_connection.rb
mysql_isolated_server-0.3.0 lib/mysql_isolated_server/jdbc_connection.rb