Hej czy zna ktos moze jakies biblioteki (o ile istnieja) ktore umozliwiaja polaczenie sie z baza danych Exasol poprzez Ruby?
Chcialby sie polaczyc z ta baza za pomoca aplikacji Rails. Do polaczenia uzywam drivera jdbc14.jar. Z baza lacze sie uzywajaca URL jak jdbc:exa:192.162.235.84…86:8563 poprzez port 8563. Jak moglbym skonfigurowac ttakie polaczenie z baza danych uzywajac Ruby i rails 3?
znalazlem przyklad dla Javy:
import java.sql.*;
import com.exasol.jdbc.*;
public class jdbcsample
{
public static void main(String[] args)
{
try {
Class.forName("com.exasol.jdbc.EXADriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection con=null;
con = DriverManager.getConnection(
"jdbc:exa:192.168.6.11..14:8563;schema=sys",
"sys",
"exasol"
);
Statement stmt=null;
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM CAT");
System.out.println("Schema SYS contains:");
while(rs.next())
{
String str1 = rs.getString("TABLE_NAME");
String str2 = rs.getString("TABLE_TYPE");
System.out.println(str1 + ", " + str2);
}
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
No to jeśli masz przykłąd w Javie, i to wszystko co w sieci znalazłeś, wychodzi na to że musisz użyć JRuby i drivera dla Javy. Współpracę z ActiveRecord widzę raczej kiepsko.
Hej, no to zaczynam swoja przygode z JRuby no i napotkalem pierwszy problem.
Stworzylem aplikacje (jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot™ Server VM 1.6.0_26) [linux-i386-java], Rails 3.0.9). Moj GemFile wyglada tak:
[code]source ‘http://rubygems.org’
gem ‘rails’, ‘3.0.9’
platforms :ruby do
gem ‘sqlite3’
end
platforms :jruby do
gem ‘activerecord-jdbc-adapter’
gem ‘jdbc-sqlite3’, :require => false
gem ‘jruby-openssl’
end
gem ‘mechanize’
gem ‘json’
gem ‘yajl-ruby’[/code]
Nie wiem czy dobrze tutaj umiescilem gemy mechanize, json i yajl ale jak umiesczam je w sekcji :ruby nie instaluja sie za pomoca bundle install (dlaczego?)
w konsoli (rails c) polecenie require ‘mechanize’ zwraca mi nil pomimo tego ze gem ten jest zainstalowany:
[code]gem list
*** LOCAL GEMS ***
abstract (1.0.0)
actionmailer (3.0.9)
actionpack (3.0.9)
activemodel (3.0.9)
activerecord (3.0.9)
activerecord-jdbc-adapter (1.2.1)
activerecord-jdbcsqlite3-adapter (1.2.1)
activeresource (3.0.9)
activesupport (3.2.0, 3.0.9)
arel (2.0.10)
bouncy-castle-java (1.5.0146.1)
builder (3.0.0, 2.1.2)
bundler (1.0.21)
domain_name (0.5.2)
erubis (2.6.6)
i18n (0.6.0, 0.5.0)
jdbc-sqlite3 (3.7.2)
jruby-launcher (1.0.12 java)
jruby-openssl (0.7.5)
json (1.6.5 java)
mail (2.2.19)
mechanize (2.1)
mime-types (1.17.2)
multi_json (1.0.4)
net-http-digest_auth (1.2)
net-http-persistent (2.3.3)
nokogiri (1.5.0 java)
ntlm-http (0.1.1)
polyglot (0.3.3)
rack (1.2.5)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.9)
railties (3.0.9)
rake (0.8.7)
rdoc (3.12)
thor (0.14.6)
treetop (1.4.10)
tzinfo (0.3.31)
unf (0.0.4)
unf_ext (0.0.4)
webrobots (0.0.13)
yajl-ruby (1.1.0)[/code]
Nie mam pojęcia jaki jest problem z Mechanize. Jeśli całą aplikację będziesz odpalać tylko i wyłąćznie na JRuby (a zapewne tak będzie), pozbądź się wogóle sekcji “platforms” z Gemfie.
[quote]PLATFORMS (:platforms)
If a gem should only be used in a particular platform or set of platforms, you can specify them. Platforms are essentially identical to groups, except that you do not need to use the --without install-time flag to exclude groups of gems for other platforms.
There are a number of Gemfile platforms:
ruby
C Ruby (MRI) or Rubinius, but NOT Windows
ruby_18
ruby AND version 1.8
ruby_19
ruby AND version 1.9
mri
Same as ruby, but not Rubinius
mri_18
mri AND version 1.8
mri_19
mri AND version 1.9
rbx
Same as ruby, but only Rubinius (not MRI)
jruby
JRuby
mswin
Windows
mingw
Windows ‘mingw32’ platform (aka RubyInstaller)
mingw_18
mingw AND version 1.8
mingw_19
mingw AND version 1.9[/quote]
Jezeli masz zamiar robic cos wiecej z ta baza to mozesz napisac adapter do data_objects, wtedy bedziesz mogl uzywac data mapper’a
Nie jestem zaawansowanym programista, znasz moze jakies przyklady takich adapterow?
W zasadzie potrzebuje polaczenia z ta baza i wykonac kilka zapytan na takiej bazie. Chyba ze ma ktos ochote na stworzenie takiego adaptera (stworzenie repozytorium dla takiego projektu) no i utworzenie takiego kodu. Robie to tylko w celach naukowych.
rozszerzasz abstrakcyjny adapter: https://github.com/datamapper/do/tree/master/do_jdbc , np: https://github.com/datamapper/do/tree/master/do_mysql lub np ten, dosc prosty, https://github.com/datamapper/do/tree/master/do_h2 . musisz nadpisac metode sluzaca do pobierania polaczenia (budowania URI) + prawdopodobnie nadpisac metode od konwersji
ok, dziekuje poczytam i sprobuje
Powinny Cie interesowac pliki z tego katalogu https://github.com/datamapper/do/tree/master/do_mysql/ext-java/src/main/java/do_mysql , reszta to (ZTCP) default.
Hej,
stworzylem sobie przyklad polaczenia z baza Exasol w Javie:
import java.sql.*;
import com.exasol.jdbc.*;
public class jdbcsample
{
public static void main(String[] args)
{
try {
Class.forName("com.exasol.jdbc.EXADriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection con=null;
con = DriverManager.getConnection(
"jdbc:exa:192.168.235.84..86:8563",
"lwlodarczyk",
"*********"
);
Statement stmt=null;
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT max(created_at) as DANE FROM ids.track_affiliate_responses");
System.out.println("Schema SYS contains:");
while(rs.next())
{
String str1 = rs.getString("DANE");
System.out.println(str1);
}
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Po dluzszych namyslach stwierdzilem ze nie chce tworzyc Railsowej aplikacji lecz aplikcaje GUI. Aplikacja taka wykorzystywalaby wlasnie polaczenie z baza Exasol za pomoca drivera jdbc. I tutaj mam pytanie: co najlepiej uzywac w takim przypadku? Czy nadal musze uzywac datamappera aby stworzyc taka GUI aplikacje w Ruby nie Jruby? Czy jest to wogole mozliwe? Czy musze stworzyc adapter dla polaczenia sie z baza exasol podobny jak do_h2. Zainstalowalem ten adapter do_h2 ale nie wiem gdzie mam nadpisac metode konwershi i tworzenia URI. Czy bezposrednio w zainstalowanym gemie do_h2?