Die Programmiersprache Ruby

Blog| Forum| Wiki  

Mit Ruby kann man auf alle verbreiteten Datenbanken zugreifen, z.B. MySQL, Postgres, Oracle, MSQL. Auch Schnittstellen wie ODBC sind implementiert.

Das Paket dbi stellt ein generisches Datenbankinterface dar, worüber auf die konkrete Datenbank zugegriffen wird. Über diese Kapselung will man erreichen, dass der Code Datenbankunabhängig programmiert werden kann.

Für jede Datenbank braucht dbi eine Connector. Dieses Connectoren sind meistens in C implementiert, also nicht pure Ruby. Entweder kompiliert man sich die Connectoren auf seinem Zielsystem selbst oder sie sind bei der Distribution mit dabei.

Inhaltsverzeichnis

Debian und dbi

Bei Debian Sarge ist die Unterstützung bestens. Es gibt vorkompilierte Pakete. Um z.B. auf eine MySQL Datenbank zuzugreifen, müssen folgende Ruby-Pakete installiert werden:

  • libdbi-ruby1.8
  • libmysql-ruby1.8
  • libdbd-mysql-ruby1.8

Das dbi-Paket greift hierbei auf das libmysql zu, welches man auch unabhängig für den Zugriff auf MySQL nutzen kann. libdbd ist dabei der Connektor, der libmysql mit libdbi verbindet. Alle verfügbaren Adapter erhält man übrigens mit

apt-cache search libdbd ruby1.8

Wichtig ist immer, dran zu denken, dass neben dem Connector weitere Bibliotheken für die konkrete Datenbank notwendig sein können, evtl. auch Bibliotheken, die direkt zur Datenbank mitgeliefert werden.

Windows und dbi

Im OneClickInstaller vom Dezember 2004 wurde dbi mitgeliefert, ebenso Connectoren für ODBC und Oracle. Leider fehlen die MySQL und Postgres Connectoren. Das ist unschön, weil viele keine Visual-C++ Umgebung installiert haben, um diese selber zu erzeugen. Siehe hierzu auch hier...

Man kann auf MySQL und Postgres unter Windows natürlich auch über ODBC zugreifen. ODBC wird von fast jeder Datenbank unterstützt.

Für ODBC muss man sich als erstes eine ODBC-Datenquelle einrichten. Unter Windows 2000 geht das für Access wie folgt:

  • Systemsteuerung > Verwaltung > Datenquellen
  • Auf dem Reiter "Benutzer-DSN" Hinzufügen... wählen
  • entsprechenden Treiber auswählen, z.B. Microsoft Access-Treiber
  • Datenquellenname eintragen, hier einen selbstgewählten kurzen Namen der Datenquelle ausdenken (keine Sonderzeichen verwenden)
  • Unter Datenbank auswählen die entsprechende Access Datenbank eintragen
  • Ok und fertig

Nehmen wir an, die Datenquelle heißt 'test' und dort ist Tabelle1 enthalten, die wir zuvor mit Access schon mit einigen Einträgen gefüllt haben. Dann wird folgendes Programm die Daten abfragen und ausgeben.

1
2
3
4
5
6
7
8
require 'dbi'
dbh = DBI.connect("dbi:odbc:test")
sth = dbh.prepare( 'select * from Tabelle1' )
sth.execute
while row=sth.fetch do
  p row
end
dbh.disconnect if dbh


Beispielprogramm

1
2
3
4
5
6
7
8
9
10
11
12
13
require 'dbi'
begin
   # connect to the MySQL server
   dbh = DBI.connect("dbi:mysql:datenbankname", "benutzername", "passwort")
   # Hier SQL Abfragen einf��gen
rescue DBI::DatabaseError => e
   puts "An error occurred"
   puts "Error code: #{e.err}"
   puts "Error message: #{e.errstr}"
ensure
   # disconnect from server
   dbh.disconnect if dbh
end


Weblinks