Latest web development tutorials

Ruby dostępu do bazy danych - DBI Tutorial

Ten rozdział pokaże jak korzystać z Ruby, aby uzyskać dostęp do bazy danych. ModułRuby DBIzapewnia interfejs bazy danych niezależnych jest podobny do modułu Perl DBI skryptów Ruby.

DBI czyli Database niezależny interfejs, w imieniu interfejsu bazy niezależne Ruby. DBI między kodu Ruby z podstawowej bazy danych zapewnia warstwę abstrakcji, która pozwala na łatwe wdrożenie przełączenie bazy danych. To definiuje zestaw metod, zmiennych i norm, zapewnia spójny interfejs DATABASE niezależne.

DBI mogą wchodzić w interakcje z następującymi zasadami:

  • ADO (ActiveX Data Objects)
  • DB2
  • FrontBase
  • mSQL
  • MySQL
  • ODBC
  • wyrocznia
  • OCI8 (Oracle)
  • PostgreSQL
  • Proxy / serwer
  • SQLite
  • SQLRelay

DBI architektury aplikacji

DBI niezależne od jakiegokolwiek dostępnego w tle bazy. Czy używasz Oracle, MySQL, Informix, można użyć DBI. Poniższy wykres wyraźnie ilustruje ten punkt.

Ruby DBI architektury

Ruby DBI ogólna architektura korzysta z dwóch warstw:

  • Interfejs bazy danych (DBI) warstwy. Warstwa ta jest w bazie niezależne i zawiera szereg publicznej metody dostępu, za pomocą serwera bazy danych, bez względu na rodzaj podejścia.
  • Kierowca Database (DBD) warstwy. Warstwa ta jest zależna od bazy danych, inny napęd zapewnia dostęp do różnych silników baz danych. MySQL, PostgreSQL, InterBase, Oracle, odpowiednio, za pomocą innego napędu. Każdy kierowca jest odpowiedzialny za interpretację wnioski z warstwy DBI, a te żądania są odwzorowywane stosuje się do wniosku o danym typie serwera bazy danych.

zainstalować

Jeśli chcesz pisać skrypty Ruby dostępu do bazy danych MySQL, trzeba zainstalować moduł Ruby MySQL.

Instalowanie MySQL Development Kit

# Ubuntu
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient15-dev

# Centos
yum install mysql-devel

Mac OS, trzeba zmodyfikować ~ / .bash_profile lub plik ~ / .profile, dodaj następujący kod:

MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

Albo użyć miękkiego połączenia:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Użyj RubyGems instalacji DBI (zalecane)

RubyGems o założona w listopadzie 2003 roku, stała się częścią biblioteki standardowej Ruby z Ruby 1.9 wersji. Więcej szczegółów można obejrzeć: Ruby RubyGems

Użyj gem install dBi i DBD-mysql:

sudo gem install dbi
sudo gem install mysql
sudo gem install dbd-mysql

Instalacja użyć kodu (wersja Ruby mniej niż 1,9 do korzystania z tej metody)

Moduł jest DBD z http://tmtm.org/downloads/mysql/ruby/~~HEAD=pobj pobrania.

Po pobraniu najnowszy pakiet, rozpakować do katalogu, należy wykonać następujące polecenie, aby zainstalować:

% ruby extconf.rb

或者

% ruby extconf.rb --with-mysql-dir=/usr/local/mysql

或者

% ruby extconf.rb --with-mysql-config

Następnie kompilacji:

% make

Uzyskać i zainstalować Ruby / DBI

Można pobrać i zainstalować moduł Ruby DBI z poniższego linku:

https://github.com/erikh/ruby-dbi

Przed rozpoczęciem instalacji, upewnij się, że masz uprawnienia administratora. Teraz należy zainstalować następujące kroki, aby zainstalować:

Etap 1

git clone https://github.com/erikh/ruby-dbi.git

Lub bezpośrednio pod innym zip i rozpakować.

Etap 2

Podaj katalogruby-dBi-master,użyjsetup.rbskrypt konfiguracyjny w katalogu. Najczęstsze polecenia konfiguracyjne nie są przestrzegane dowolnymi parametrami parametrem konfiguracyjnym. Komenda domyślna konfiguracja, aby zainstalować wszystkie sterowniki.

$ ruby setup.rb config

Dokładniej, można użyć opcji --with do listy konkretną partię, którą chcesz użyć. Na przykład, jeśli chcesz skonfigurować główny moduł DBI i napęd warstwy MySQL DBD, wprowadź następujące polecenie:

$ ruby setup.rb config --with=dbi,dbd_mysql

etap 3,

Ostatnim krokiem jest utworzenie dysku, należy użyć następującego polecenia, aby zainstalować:

$ ruby setup.rb setup
$ ruby setup.rb install

Database Connectivity

Załóżmy, że mamy do korzystania z bazy danych MySQL przed połączeniem się z bazą danych, należy upewnić się, że:

  • Został utworzony testdb bazy danych.
  • Został utworzony pracownika w tabeli z bazą danych TESTDB.
  • Stół z FIRST_NAME pola, LAST_NAME, wieku, płci i dochodów.
  • Ustaw ID użytkownika "tester" i hasło "test123", aby uzyskać dostęp testdb
  • Już na komputerze zainstalowany prawidłowo Ruby modułu DBI.
  • Widzieliście samouczek MySQL, zrozumienie podstawowej MySQL operacyjnego.

Poniżej przedstawiono przykłady baz danych MySQL związku "testdb" stanowi:

#!/usr/bin/ruby -w

require "dbi"

begin
     # 连接到 MySQL 服务器
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123")
     # 获取服务器版本字符串,并显示
     row = dbh.select_one("SELECT VERSION()")
     puts "Server version: " + row[0]
rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

Po uruchomieniu tego skryptu, przyniesie następujące rezultaty na komputerze z systemem Linux.

Server version: 5.0.45

Jeśli nawiązanie połączenia ze źródłem danych, zwróconym uchwyt bazy danych (uchwyt bazy danych), a zapisywane wpierśnicy do późniejszego wykorzystania lub dbhzostanie ustawiony nawartość zerową,e.err ie :: errstrzwróci kod błędu i błąd ciąg.

Wreszcie, przed zamknięciem tego programu, należy zamknąć połączenie z bazą danych, uwolnienie zasobów.

operacja INSERT

Gdy chcesz utworzyć rekord w tabeli bazy danych, należy użyć operacji INSERT.

Raz do połączenia z bazą danych, jesteśmy gotowi, aby utworzyć tabelę lub wstawić dane w tabeli, aby utworzyć metodę nagrywania przy użyciuzrobić lub przygotowaćiwykonaćmetodami.

Zastosowanie do instrukcja

Oświadczenie nie zwraca wierszezrobić poprzez wywołanie metody przetwarzania baz danych.Metoda ta przyjmuje parametr ciąg oświadczenie i zwraca liczbę wierszy dotkniętych instrukcji.

dbh.do("DROP TABLE IF EXISTS EMPLOYEE")
dbh.do("CREATE TABLE EMPLOYEE (
     FIRST_NAME  CHAR(20) NOT NULL,
     LAST_NAME  CHAR(20),
     AGE INT,  
     SEX CHAR(1),
     INCOME FLOAT )" );

W podobny sposób możnawykonaćinstrukcjiINSERT,aby utworzyć rekordy do tabeli pracownika.

#!/usr/bin/ruby -w

require "dbi"

begin
     # 连接到 MySQL 服务器
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123")
     dbh.do( "INSERT INTO EMPLOYEE(FIRST_NAME,
                   LAST_NAME, 
                   AGE, 
         SEX, 
         INCOME)
          VALUES ('Mac', 'Mohan', 20, 'M', 2000)" )
     puts "Record has been created"
     dbh.commit
rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
     dbh.rollback
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

Korzystanieprzygotowanieiwykonanie

Można użyć metodyprzygotowaniairealizacjiDBI do wykonania Ruby oświadczenia kod SQL.

Aby utworzyć płytę, co następuje:

  • Przygotowana instrukcja SQL za pomocą instrukcji INSERT. W ten sposób można osiągnąć poprzez zastosowanie metodyprzygotowania.
  • Wykonaj zapytanie SQL, zaznacz wszystkie wyniki z bazy danych. W ten sposób można osiągnąćza pomocą sposobu wykonania.
  • Zwolnij uchwyt oświadczenie. Będzie to dokonane przez zastosowaniemety API.
  • Jeśli wszystko pójdzie dobrze, topopełnić operację lub można wykonać wycofywanie transakcji.

Oto składnia tych dwóch metod:

sth = dbh.prepare(statement)
sth.execute
   ... zero or more SQL operations ...
sth.finish

Obie metody mogą być stosowane dowiązania wartości przejść SQL.Czasami wartości do wprowadzenia nie mogą zostać podane przed, w tym przypadku, stosuje się do wiązania wartości. Używaj znaku zapytania(?) Zamiast rzeczywistej wartości, wartość rzeczywista przejść przez execute () API.

Poniższy przykład tworzy dwa rekordy w tabeli Pracownik:

#!/usr/bin/ruby -w

require "dbi"

begin
     # 连接到 MySQL 服务器
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123")
     sth = dbh.prepare( "INSERT INTO EMPLOYEE(FIRST_NAME,
                   LAST_NAME, 
                   AGE, 
         SEX, 
         INCOME)
                   VALUES (?, ?, ?, ?, ?)" )
     sth.execute('John', 'Poul', 25, 'M', 2300)
     sth.execute('Zara', 'Ali', 17, 'F', 1000)
     sth.finish
     dbh.commit
     puts "Record has been created"
rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
     dbh.rollback
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

Jeśli korzystasz z wielu INSERT, to najpierw przygotować sprawozdanie, a następnie wykonać kilka razy w pętli przez każdego cyklu, niż wymaga zrobić o wiele bardziej efektywnie.

operacji odczytu

Operacja odczytu na dowolnej bazy danych odnosi się do uzyskania użytecznych informacji z bazy danych.

Raz do połączenia z bazą danych, jesteśmy gotowi do zapytania do bazy danych. Możemy zastosować metodę lubsposób przygotowaniaiwykonaniametody, aby uzyskać wartości z tabeli bazy danych.

Pierwsze krok rejestrowane w następujący sposób:

  • Na podstawie warunków wymaganych do przygotowania zapytań SQL. W ten sposób można osiągnąć poprzez zastosowanie metodyprzygotowania.
  • Wykonaj zapytanie SQL, zaznacz wszystkie wyniki z bazy danych. W ten sposób można osiągnąćza pomocą sposobu wykonania.
  • Je, aby otrzymać wyniki, i wysyła wynik. W ten sposób można osiągnąć dzięki zastosowaniupobierać metod.
  • Zwolnij uchwyt oświadczenie. W ten sposób można osiągnąć poprzez zastosowanie sposobówwykończenia.

W poniższym przykładzie kwerendy wszystkich płac (wynagrodzenia) rejestrowane ponad 1000 od stołu pracownika.

#!/usr/bin/ruby -w

require "dbi"

begin
     # 连接到 MySQL 服务器
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123")
     sth = dbh.prepare("SELECT * FROM EMPLOYEE 
                        WHERE INCOME > ?")
     sth.execute(1000)

     sth.fetch do |row|
        printf "First Name: %s, Last Name : %s\n", row[0], row[1]
        printf "Age: %d, Sex : %s\n", row[2], row[3]
        printf "Salary :%d \n\n", row[4]
     end
     sth.finish
rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

To daje następujące wyniki:

First Name: Mac, Last Name : Mohan
Age: 20, Sex : M
Salary :2000

First Name: John, Last Name : Poul
Age: 25, Sex : M
Salary :2300

Istnieje wiele metod, aby uzyskać rekordy z bazy danych, jeśli jesteś zainteresowany, można zobaczyć działanie Ruby DBI odczytu .

aktualizacja Operacja

Każde działanie w bazie UPDATE odnosi się do jednej lub więcej aktualizacji bazy istniejących rekordów. Poniższy przykład aktualizuje seks jest "M" dla wszystkich rekordów. Tutaj dodamy roku wszystkie mężczyźni wiekowych. Będzie można podzielić na trzy etapy:

  • Na podstawie warunków wymaganych do przygotowania zapytań SQL. W ten sposób można osiągnąć poprzez zastosowanie metodyprzygotowania.
  • Wykonaj zapytanie SQL, zaznacz wszystkie wyniki z bazy danych. W ten sposób można osiągnąćza pomocą sposobu wykonania.
  • Zwolnij uchwyt oświadczenie. W ten sposób można osiągnąć poprzez zastosowanie sposobówwykończenia.
  • Jeśli wszystko pójdzie dobrze, topopełnić operację lub można wykonać wycofywanie transakcji.
#!/usr/bin/ruby -w

require "dbi"

begin
     # 连接到 MySQL 服务器
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123")
     sth = dbh.prepare("UPDATE EMPLOYEE SET AGE = AGE + 1
                        WHERE SEX = ?")
     sth.execute('M')
     sth.finish
     dbh.commit
rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
     dbh.rollback
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

operacja usuwania

Jeśli chcesz usunąć rekordy z bazy danych, należy użyć operacji usuwania. Poniższe przykłady usuwać wieku 20 lat w stosunku do wszystkich zapisów od pracownika. Etapy działania są następujące:

  • Na podstawie warunków wymaganych do przygotowania zapytań SQL. W ten sposób można osiągnąć poprzez zastosowanie metodyprzygotowania.
  • Wykonywanie zapytań SQL, usuń żądane rekordy z bazy danych. W ten sposób można osiągnąćza pomocą sposobu wykonania.
  • Zwolnij uchwyt oświadczenie. W ten sposób można osiągnąć poprzez zastosowanie sposobówwykończenia.
  • Jeśli wszystko pójdzie dobrze, topopełnić operację lub można wykonać wycofywanie transakcji.
#!/usr/bin/ruby -w

require "dbi"

begin
     # 连接到 MySQL 服务器
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123")
     sth = dbh.prepare("DELETE FROM EMPLOYEE 
                        WHERE AGE > ?")
     sth.execute(20)
     sth.finish
     dbh.commit
rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
     dbh.rollback
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

sprawy wykonawcze

Transakcja jest mechanizmem, w celu zapewnienia spójności transakcyjnej. Usługi powinny mieć cztery następujące atrybuty:

  • Atomowość (niepodzielność): niepodzielność transakcji oznacza, że program jest zawarty w transakcji jako jednostki logicznej bazy danych do pracy, robi operacje modyfikacji danych albo wszystkie wykonane lub nie zrealizowane w ogóle.
  • Spójność (Spójność): transakcja Spójność dotyczy transakcji zawartej przed i po wdrożeniu bazy danych musi być w stanie spójnym.Jeżeli stan bazy danych spełnia wszystkie ograniczenia integralności, mówią, że baza danych jest spójna.
  • Izolacja (izolacji) izolowanie transakcja dotyczy jednoczesnych operacji są oddzielone od siebie, to znaczy w transakcji pracy i obsługi danych muszą być uszczelnione, to nie jest widoczne inne próby modyfikowania transakcji.
  • Trwałe (trwałość): trwałość transakcji oznacza, że gdy system lub nośniki awaria, popełnione transakcji w celu zapewnienia, że aktualizacje nie mogą zostać utracone.Że po transakcji zobowiązuje się, zmienić swoje dane w bazie danych powinny być trwałe, znosić żadnej awarii systemu bazy danych. Trwałe zagwarantowane tworzenia kopii zapasowych i odzyskiwania danych.

DBI oferuje dwa sposoby na wykonanie transakcji. Jednym z nich jestzobowiązanialubwycofaniametody popełnienia lub wycofać transakcję. Istnieje również sposóbtransakcjamoże być wykorzystywane do realizacji transakcji. Następnie wprowadzić dwie proste metody realizacji transakcji:

metoda I

Pierwsza metoda wykorzystujezatwierdzanieiROLLBACKmetod DBI jawnie popełnienia lub anulować transakcję:

   dbh['AutoCommit'] = false # 设置自动提交为 false.
   begin
     dbh.do("UPDATE EMPLOYEE SET AGE = AGE+1 
             WHERE FIRST_NAME = 'John'")
     dbh.do("UPDATE EMPLOYEE SET AGE = AGE+1 
             WHERE FIRST_NAME = 'Zara'")
     dbh.commit
   rescue
     puts "transaction failed"
     dbh.rollback
   end
   dbh['AutoCommit'] = true

Sposób II

Druga metoda wykorzystuje metodętransakcji.Metoda ta jest stosunkowo prosta, ponieważ wymaga transakcja stanowi blok kodu zawierający oświadczenie. Metodatransakcjiwykonuje blok, a następnie blok jest wykonana pomyślnie, automatycznie wywołaćpopełnienialubwycofać:

   dbh['AutoCommit'] = false # 设置自动提交为 false
   dbh.transaction do |dbh|
     dbh.do("UPDATE EMPLOYEE SET AGE = AGE+1 
             WHERE FIRST_NAME = 'John'")
     dbh.do("UPDATE EMPLOYEE SET AGE = AGE+1 
             WHERE FIRST_NAME = 'Zara'")
   end
   dbh['AutoCommit'] = true

COMMIT operację

Zobowiązać się operacja została zakończona w celu identyfikacji zmian w bazie danych, a po tej operacji, wszystkie zmiany nie podlegają zwrotowi.

Oto prosty przykładzobowiązać wywołania metody.

     dbh.commit

operacja ROLLBACK

Jeśli nie jesteś zadowolony z jednego lub kilku zmian, chcesz, aby całkowicie przywrócić te zmiany, należy użyć metodywycofywania.

Oto prosty przykładwycofania wywołania metody.

     dbh.rollback

Odłącz bazę danych

Aby rozłączyć się z bazą danych, należy użyć API rozłączania.

    dbh.disconnect

Jeśli użytkownik zamyka metodę rozłączania połączenia z bazą danych, DBI wycofuje wszystkie niekompletne transakcji. Jednak to nie opiera się na szczegółach realizacji którejkolwiek DBI, a aplikacja może być dobrym wyraźne wezwanie do popełnienia lub wycofać.

błąd przetwarzania

Istnieje wiele różnych źródeł błędów. Na przykład błędy składniowe w celu wykonania instrukcji SQL lub połączenie nie powiedzie się, czy jest kompletne zestawienie połączenia lub anulowanego uchwyt sprowadzić metodę.

Jeśli metoda DBI zawiedzie, DBI rzuci wyjątek. Metoda DBI mogą rzucić dowolny typ wyjątku, ale dwa najważniejsze klasy Wyjątkiem jestDBI :: InterfaceErroriDBI :: Databaseerror.

obiekty wyjątkiem tych klas sąErr,errstr trzy atrybuty istan,sub-tabela przedstawia liczbę błędów, opisową błędzie ciąg i standardowy kod błędu. Parametry określone w następujący sposób:

  • err: zwraca błąd całkowitą, która miała miejsce zapisu, jeśli DBD nie obsługuje powrótzera.Na przykład, Oracle DBD Zwraca punkt komunikat o błędzie ORA-XXXX.
  • errstr: Zwraca ciąg znaków reprezentujący błędu, który wystąpił.
  • Stan: Zwraca kod błędu SQLSTATE miejsce.SQLSTATE jest pięć znaków długości łańcuch. Większość DBD nie obsługuje, zwróci nil.

W powyższym przykładzie, widziałeś następujący kod:

rescue DBI::DatabaseError => e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"
     dbh.rollback
ensure
     # 断开与服务器的连接
     dbh.disconnect if dbh
end

Aby uzyskać informacje debugowania o treści skryptu jest wykonywany, gdy skrypt zostanie wykonany, można włączyć śledzenie. Aby to zrobić, należy najpierw pobrać moduł dBi / śledzenia, a następnie zadzwonić do śledzenia tryb sterowania i sposobu wyjścia przeznaczeniaśledzenia:

require "dbi/trace"
..............

trace(mode, destination)

Tryb wartość może być 0 (wyłączone), 1,2 lub 3, wartość przeznaczenia powinno być przedmiotem IO. Domyślne wartości to 2 i stderr.

metoda blok

Istnieją sposoby, aby utworzyć uchwytu. Metody te są wywoływane przez blok kodu. Zalety korzystania z bloków kodu za pomocą metody jest to, że dostarczają one uchwyt do bloku jako argument, gdy blok zostaje rozwiązana automatycznie usuwane uchwyt. Oto kilka przykładów, które pomogą zrozumieć tę koncepcję.

  • DBI.connect: Metoda ta generuje uchwyt baz danych, jest zalecane w celurozłączeniapołączenia z bloku odłączania bazy danych.
  • dbh.prepare: Metoda ta generuje uchwyt oświadczenie zaleca wywołaniewykończeniena końcu bloku.Wewnątrz bloku, należy wywołać metodęExecute wcelu wykonania instrukcji.
  • dbh.execute: Sposób jest podobny do dbh.prepare, ale nie dbh.execute zadzwonić do wykonywania sposobu w tym polu.Uchwyt stwierdzenie jest wykonywane automatycznie.

Przykład 1

DBI.connect może blok kodu, przekazując mu uchwytu bazy danych, a uchwyt automatycznie odłączać na końcu bloku.

dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                  "testuser", "test123") do |dbh|

Przykład 2

dbh.prepare może blok kodu, przechodząc uchwyt wyciągu oraz wywołuje automatycznie zakończyć na końcu bloku.

dbh.prepare("SHOW DATABASES") do |sth|
       sth.execute
       puts "Databases: " + sth.fetch_all.join(", ")
end

Przykład 3

dbh.execute może blok kodu, przechodząc uchwyt wyciągu oraz wywołuje automatycznie zakończyć na końcu bloku.

dbh.execute("SHOW DATABASES") do |sth|
   puts "Databases: " + sth.fetch_all.join(", ")
end

Sposób transakcjiDBImoże być również wyposażona w bloku kodu, co w powyższych sekcjach nie wyjaśniono powyżej.

Funkcje i właściwości specyficznych dla kierowcy

Niech sterownik bazy danych DBI zapewnia dodatkowe funkcje konkretnej bazy danych, funkcje te mogą być wywoływane przez jakąkolwiekfunkłatwy sposób Handle obiektu.

Użyj[] = lub [],aby ustawić metodę lub uzyskać atrybuty specyficzne sterowniki.

DBD :: mysql realizuje następujące funkcje określonego sterownika:

Nie. Funkcja i opis
1 dbh.func (: createdb, db_name)
Utwórz nową bazę danych.
2 dbh.func (: dropdb, db_name)
Aby usunąć bazę danych.
3 dbh.func (: reload)
Odśwież operację.
4 dbh.func (: shutdown)
Wyłącz serwer.
5 dbh.func (: insert_id) => Fixnum
Zwraca ostatnią wartość AUTO_INCREMENT połączenia.
6 dbh.func (: client_info) => String
Zwraca MySQL wersja klienta informacje wymagane.
7 dbh.func (: client_version) => Fixnum
W zależności od informacji o wersji z powrotem do klienta. To jest: Podobny do client_info, ale powróci do Fixnum, zamiast wracać ciąg.
8 dbh.func (: host_info) => String
Zwraca informacje hosta.
9 dbh.func (: proto_info) => Fixnum
Zwraca protokołów wykorzystywanych do komunikacji.
10 dbh.func (: server_info) => String
Zwraca informacje o wersji serwera MySQL w oparciu.
11 dbh.func (: stat) => Stringb >
Zwraca aktualny stan danych.
12 dbh.func (: thread_id) => Fixnum
Zwraca id bieżącego wątku.

Przykłady

#!/usr/bin/ruby

require "dbi"
begin
   # 连接到 MySQL 服务器
   dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", 
                       "testuser", "test123") 
   puts dbh.func(:client_info)
   puts dbh.func(:client_version)
   puts dbh.func(:host_info)
   puts dbh.func(:proto_info)
   puts dbh.func(:server_info)
   puts dbh.func(:thread_id)
   puts dbh.func(:stat)
rescue DBI::DatabaseError => e
   puts "An error occurred"
   puts "Error code:    #{e.err}"
   puts "Error message: #{e.errstr}"
ensure
   dbh.disconnect if dbh
end

To daje następujące wyniki:

5.0.45
50045
Localhost via UNIX socket
10
5.0.45
150621
Uptime: 384981  Threads: 1  Questions: 1101078  Slow queries: 4 \
Opens: 324  Flush tables: 1  Open tables: 64  \
Queries per second avg: 2.860