Latest web development tutorials

akses database Ruby - DBI Tutorial

Bab ini akan menunjukkan kepada Anda bagaimana menggunakan Ruby untuk mengakses database.Ruby DBImodul menyediakan antarmuka database-independen mirip dengan Perl DBI modul untuk script Ruby.

DBI yaitu database antarmuka independen, atas nama antarmuka database-independen Ruby. DBI antara kode Ruby dengan database menyediakan lapisan abstraksi yang memungkinkan Anda untuk dengan mudah menerapkan peralihan basis data. Ini mendefinisikan seperangkat metode, variabel dan norma-norma, menyediakan antarmuka database yang konsisten database independen.

DBI dapat berinteraksi dengan berikut:

  • ADO (ActiveX Data Objects)
  • DB2
  • Frontbase
  • mSQL
  • MySQL
  • ODBC
  • peramal
  • OCI8 (Oracle)
  • PostgreSQL
  • Proxy / Server
  • SQLite
  • SQLRelay

arsitektur aplikasi DBI

DBI independen database apapun yang tersedia di latar belakang. Apakah Anda menggunakan Oracle, MySQL, Informix, Anda dapat menggunakan DBI. Bagan berikut jelas menggambarkan hal ini.

arsitektur Ruby DBI

Ruby DBI arsitektur umum menggunakan dua lapisan:

  • Database Interface (DBI) lapisan. Lapisan ini database independen dan menyediakan serangkaian metode akses publik, menggunakan server database, terlepas dari jenis pendekatan.
  • Database driver (DBD) lapisan. Lapisan ini tergantung pada database, drive yang berbeda memberikan akses ke mesin database yang berbeda. MySQL, PostgreSQL, Interbase, Oracle, masing-masing, menggunakan drive yang berbeda. Setiap pengemudi bertanggung jawab untuk menafsirkan permintaan dari lapisan DBI, dan permintaan ini dipetakan untuk menerapkan permintaan untuk jenis tertentu dari database server.

memasang

Jika Anda ingin menulis skrip Ruby untuk mengakses database MySQL, Anda perlu menginstal modul Ruby MySQL.

Menginstal Mysql Development Kit

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

# Centos
yum install mysql-devel

Mac OS, Anda perlu memodifikasi ~ / .bash_profile atau ~ / Profil file, tambahkan kode berikut:

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

Atau menggunakan koneksi lunak:

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

Gunakan RubyGems menginstal DBI (dianjurkan)

RubyGems tentang didirikan pada November 2003, menjadi bagian dari Ruby perpustakaan standar dari Ruby 1.9 versi. Rincian lebih lanjut dapat dilihat: Ruby rubygems

Gunakan gem install dbi dan dbd-mysql:

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

Gunakan Kode instalasi (versi Ruby kurang dari 1,9 untuk menggunakan metode ini)

Modul ini adalah DBD, dari http://tmtm.org/downloads/mysql/ruby/ Download.

Setelah men-download paket terbaru, unzip ke direktori, jalankan perintah berikut untuk menginstal:

% ruby extconf.rb

或者

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

或者

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

Kemudian kompilasi:

% make

Mendapatkan dan menginstal Ruby / DBI

Anda dapat men-download dan menginstal modul Ruby DBI dari link berikut:

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

Sebelum memulai instalasi, pastikan Anda memiliki hak akses root. Sekarang, menginstal langkah-langkah berikut untuk menginstal:

Langkah 1

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

Atau langsung di bawah pos lain dan unzip.

Langkah 2

Masukkan direktoriruby-dbi-master,menggunakan script konfigurasisetup.rbdalam direktori. Perintah konfigurasi yang paling umum tidak diikuti dengan parameter parameter konfigurasi. Perintah konfigurasi default untuk menginstal semua driver.

$ ruby setup.rb config

Lebih khusus, Anda dapat menggunakan opsi --with untuk daftar bagian tertentu yang ingin Anda gunakan. Misalnya, jika Anda ingin mengkonfigurasi modul DBI utama dan lapisan berkendara MySQL DBD, masukkan perintah berikut:

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

Langkah 3

Langkah terakhir adalah untuk menciptakan drive, gunakan perintah berikut untuk menginstal:

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

database Connectivity

Misalkan kita menggunakan database MySQL sebelum menghubungkan ke database, pastikan bahwa:

  • Anda telah membuat testdb basis data.
  • Anda telah menciptakan KARYAWAN meja di testdb.
  • Tabel dengan bidang FIRST_NAME, LAST_NAME, AGE, SEX dan PENGHASILAN.
  • Set user ID "testuser" dan password "test123" untuk mengakses testdb
  • Sudah pada mesin Anda terpasang dengan benar Ruby modul DBI.
  • Anda telah melihat MySQL tutorial, memahami MySQL operasi yang mendasarinya.

Berikut ini adalah contoh dari MySQL koneksi database "testdb" dari:

#!/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

Ketika Anda menjalankan script ini, akan menghasilkan hasil sebagai berikut pada mesin Linux.

Server version: 5.0.45

Jika Anda membuat sambungan dengan sumber data, menangani database kembali (Database Handle), dan disimpan kedbh untuk penggunaan selanjutnya, atau dbhakan diatur kenilai nil,e.err dane :: errstrmengembalikan kode kesalahan dan kesalahan tali.

Akhirnya, sebelum keluar program ini, pastikan untuk menutup koneksi database, pelepasan sumber daya.

operasi INSERT

Bila Anda ingin membuat catatan dalam tabel database, Anda perlu menggunakan operasi INSERT.

Setelah koneksi database, kita siap untuk membuat tabel atau menyisipkan data dalam tabel untuk menciptakan sebuah metode rekaman menggunakando atau mempersiapkandanmelaksanakanmetode.

Gunakan melakukan pernyataan

Pernyataan itu tidak kembali baris dengan memanggilmelakukan metode pengolahan database.Metode ini membutuhkan pernyataan parameter string dan mengembalikan jumlah baris yang dipengaruhi oleh pernyataan itu.

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 )" );

Demikian pula, Anda dapatmengeksekusipernyataan SQLINSERTuntuk membuat catatan ke dalam tabel EMPLOYEE.

#!/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

Menggunakanmempersiapkandanmelaksanakan

Anda dapat menggunakan DBI inimempersiapkandanmelaksanakanmetode untuk mengeksekusi Ruby pernyataan kode SQL.

Untuk membuat rekor sebagai berikut:

  • Pernyataan SQL siap dengan pernyataan INSERT. Hal ini akan dicapai melalui penggunaanmempersiapkan metode.
  • Mengeksekusi SQL query, pilih semua hasil dari database. Hal ini akan dicapai denganmenggunakan metode mengeksekusi.
  • Lepaskan pernyataan pegangan. Hal ini akan dicapai melalui penggunaanfinish API.
  • Jika semua berjalan dengan baik, maka operasikomit, atau Anda dapat menyelesaikan transaksi rollback.

Berikut adalah sintaks dari dua metode ini:

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

Kedua metode dapat digunakan untukmengikat nilai untuk lulus pernyataan SQL.Terkadang nilai yang dimasukkan tidak dapat diberikan di muka, dalam hal ini, digunakan untuk mengikat nilai-nilai. Gunakan tanda tanya(?) Daripada nilai aktual, nilai aktual untuk melewati mengeksekusi () API.

Contoh berikut membuat dua catatan dalam tabel EMPLOYEE:

#!/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

Jika Anda menggunakan beberapa INSERT, maka pertama menyiapkan laporan, dan kemudian jalankan beberapa kali dalam satu lingkaran melalui setiap siklus daripada panggilan melakukan lebih efisien.

operasi BACA

READ operasi pada database apapun mengacu untuk mendapatkan informasi yang berguna dari database.

Setelah koneksi database, kita siap untuk query database. Kita dapat menggunakan metodeatau mempersiapkandanmelaksanakanmetode untuk mendapatkan nilai dari tabel database.

Dapatkan langkah dicatat sebagai berikut:

  • Berdasarkan kondisi yang diperlukan untuk persiapan query SQL. Hal ini akan dicapai melalui penggunaanmempersiapkan metode.
  • Mengeksekusi SQL query, pilih semua hasil dari database. Hal ini akan dicapai denganmenggunakan metode mengeksekusi.
  • Satu per satu untuk mendapatkan hasil, dan output hasil. Hal ini akan dicapai melalui penggunaanmengambil metode.
  • Lepaskan pernyataan pegangan. Hal ini akan dicapai melalui penggunaan metodefinish.

Contoh berikut query semua upah (gaji) mencatat lebih dari 1.000 dari tabel EMPLOYEE.

#!/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

Ini menghasilkan hasil sebagai berikut:

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

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

Ada banyak metode untuk mendapatkan catatan dari database, jika Anda tertarik, Anda dapat melihat Ruby DBI Baca operasi .

Operasi pembaruan

Setiap operasi database UPDATE mengacu pada satu atau lebih database update catatan yang ada. Contoh berikut update SEX adalah 'M' untuk semua catatan. Di sini, kita akan menambahkan satu tahun semua laki-laki AGE. Ini akan dibagi menjadi tiga tahap:

  • Berdasarkan kondisi yang diperlukan untuk persiapan query SQL. Hal ini akan dicapai melalui penggunaanmempersiapkan metode.
  • Mengeksekusi SQL query, pilih semua hasil dari database. Hal ini akan dicapai denganmenggunakan metode mengeksekusi.
  • Lepaskan pernyataan pegangan. Hal ini akan dicapai melalui penggunaan metodefinish.
  • Jika semua berjalan dengan baik, maka operasikomit, atau Anda dapat menyelesaikan transaksi rollback.
#!/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

operasi DELETE

Bila Anda ingin menghapus catatan dari database, Anda perlu menggunakan operasi DELETE. Contoh berikut menghapus AGE 20 atas semua catatan dari EMPLOYEE tersebut. Langkah-langkah operasi adalah sebagai berikut:

  • Berdasarkan kondisi yang diperlukan untuk persiapan query SQL. Hal ini akan dicapai melalui penggunaanmempersiapkan metode.
  • Mengeksekusi query SQL, menghapus catatan yang diinginkan dari database. Hal ini akan dicapai denganmenggunakan metode mengeksekusi.
  • Lepaskan pernyataan pegangan. Hal ini akan dicapai melalui penggunaan metodefinish.
  • Jika semua berjalan dengan baik, maka operasikomit, atau Anda dapat menyelesaikan transaksi rollback.
#!/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

Urusan eksekutif

Sebuah transaksi adalah mekanisme untuk memastikan konsistensi transaksi. Jasa harus memiliki empat atribut berikut:

  • Atomicity (Atomicity): atomicity transaksi berarti bahwa program ini termasuk dalam transaksi sebagai unit logis database pekerjaan, ia melakukan operasi modifikasi data baik semua dijalankan atau tidak dijalankan sama sekali.
  • Konsistensi (Consistency): transaksi Konsistensi mengacu pada transaksi dieksekusi sebelum dan setelah pelaksanaan database harus dalam keadaan konsisten.Jika keadaan database memenuhi semua batasan integritas, mengatakan database konsisten.
  • Isolasi (Isolasi): isolasi transaksi mengacu pada transaksi konkuren yang terisolasi satu sama lain, yaitu, dalam transaksi data operasi dan operasi yang harus ditutup, tidak terlihat upaya lain untuk memodifikasi transaksi.
  • Persistent (Daya Tahan): daya tahan transaksi berarti bahwa ketika sistem atau media kegagalan, berkomitmen transaksi untuk memastikan bahwa update tidak bisa hilang.Bahwa sekali transaksi melakukan, mengubah data dalam database harus permanen, bertahan kegagalan sistem database. Persistent dijamin oleh backup database dan pemulihan.

DBI memberikan dua cara untuk melakukan transaksi. Salah satunya adalahmelakukanataurollbackmetode untuk melakukan atau memutar kembali transaksi. Ada juga metodetransaksi yangdapat digunakan untuk melaksanakan transaksi. Berikutnya kami memperkenalkan dua metode sederhana untuk melaksanakan transaksi:

metode yang saya

Metode pertama menggunakan DBIkomitdanrollbackmetode untuk secara eksplisit melakukan atau membatalkan transaksi:

   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

metode II

Metode kedua menggunakan metodetransaksi.Metode ini relatif sederhana, karena memerlukan transaksi merupakan blok kode yang berisi pernyataan. Metodetransaksimengeksekusi blok, dan kemudian blok dijalankan berhasil, secara otomatis memanggilmelakukanataurollback:

   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 operasi

Komit operasi telah selesai untuk mengidentifikasi perubahan database, dan setelah operasi ini, semua perubahan yang tidak dapat dipulihkan.

Berikut ini adalah contoh sederhanakomit metode doa.

     dbh.commit

operasi ROLLBACK

Jika Anda tidak puas dengan satu atau beberapa perubahan, Anda ingin benar-benar mengembalikan perubahan ini, menggunakan metoderollback.

Berikut ini adalah contoh sederhana dari metoderollback panggilan.

     dbh.rollback

Lepaskan database

Untuk memutuskan sambungan dari database, menggunakan putuskan API.

    dbh.disconnect

Jika pengguna menutup metode putuskan koneksi database, DBI gulung kembali semua transaksi tidak lengkap. Namun, tidak bergantung pada rincian pelaksanaan setiap DBI, dan aplikasi Anda bisa menjadi panggilan eksplisit baik untuk melakukan atau rollback.

kesalahan pengolahan

Ada banyak sumber yang berbeda dari kesalahan. Misalnya, kesalahan sintaks dalam pelaksanaan pernyataan SQL atau koneksi gagal, atau merupakan pernyataan lengkap atau dibatalkan menangani panggilan mengambil metode.

Jika metode DBI gagal, DBI akan melempar pengecualian. Metode DBI dapat membuang jenis pengecualian, tapi dua kelas pengecualian yang paling penting adalahDBI :: InterfaceErrordanDBI :: DatabaseError.

benda pengecualian kelas-kelas inierr,errstr tiga atribut dannegara,sub-tabel merepresentasikan jumlah kesalahan, kesalahan tali deskriptif dan kode kesalahan standar. Atribut yang ditentukan sebagai berikut:

  • err: kembali kesalahan integer yang terjadi notasi, jika DBD tidak mendukung kembalinyanihil.Misalnya, Oracle DBD Pengembalian bagian ORA-XXXXpesan kesalahan.
  • errstr: Mengembalikan representasi string dari kesalahan yang terjadi.
  • negara: Mengembalikan kode kesalahan SQLSTATE terjadi.SQLSTATE adalah panjang string lima karakter. Sebagian besar DBD tidak mendukung, itu akan kembali nihil.

Dalam contoh di atas, Anda telah melihat kode berikut:

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

Untuk mendapatkan debug informasi tentang isi dari script dijalankan ketika script dijalankan, Anda dapat mengaktifkan tracing. Untuk melakukan ini, Anda harus terlebih dahulu men-download dbi / jejak modul, dan kemudian memanggil pelacakan mode kontrol dan metode output tujuanjejak:

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

trace(mode, destination)

Modus Nilai dapat 0 (off), 1,2, atau 3, nilai tujuan harus menjadi objek IO. Nilai default adalah 2 dan stderr.

metode block

Ada cara untuk membuat pegangan. Metode ini dipanggil oleh blok kode. Keuntungan menggunakan blok kode dengan metode ini adalah bahwa mereka memberikan pegangan untuk blok sebagai argumen ketika blok diakhiri otomatis dihapus menangani. Berikut adalah beberapa contoh untuk membantu memahami konsep ini.

  • DBI.connect: Metode ini menghasilkan pegangan basis data, dianjurkan pada akhirputuskanblok panggilan untuk memutuskan database.
  • dbh.prepare: Metode ini menghasilkan pegangan pernyataan, menyarankan memanggilfinishdi ujung blok.Dalam blok, Anda harus memanggilmelaksanakanmetode untuk mengeksekusi pernyataan.
  • dbh.execute: Metode ini mirip dengan dbh.prepare, tapi dbh.execute tidak perlu memanggil melaksanakan metode dalam blok.Sebuah menangani pernyataan secara otomatis dijalankan.

contoh 1

DBI.connect mungkin memiliki blok kode, lewat itu menangani database, dan pegangan secara otomatis akan memutuskan pada akhir blok.

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

contoh 2

dbh.prepare mungkin memiliki blok kode, lewat pernyataan menangani, dan secara otomatis panggilan finish di ujung blok.

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

contoh 3

dbh.execute mungkin memiliki blok kode, lewat pernyataan menangani, dan secara otomatis panggilan finish di ujung blok.

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

Metode transaksiDBIjuga dapat diberikan dengan blok kode, yang di bagian atas telah dijelaskan sebelumnya.

fungsi driver-spesifik dan sifat

Mari driver database DBI memberikan fungsi tambahan database tertentu, fungsi-fungsi ini dapat dipanggil oleh setiap penggunafuncobjek metode Handle.

Gunakan[] = atau []metode untuk mengatur atau mendapatkan driver khusus atribut.

DBD :: Mysql mengimplementasikan fungsi berikut driver khusus:

Tidak. Fungsi & Keterangan
1 dbh.func (: createdb, DB_NAME)
Membuat database baru.
2 dbh.func (: dropdb, DB_NAME)
Untuk menghapus database.
3 dbh.func (: isi ulang)
Reload operasi.
4 dbh.func (: shutdown)
Mematikan server.
5 dbh.func (: insert_id) => Fixnum
Mengembalikan nilai AUTO_INCREMENT terbaru dari sambungan.
6 dbh.func (: client_info) => String
Mengembalikan MySQL informasi versi klien seperti yang diperlukan.
7 dbh.func (: client_version) => Fixnum
Tergantung pada informasi versi kembali ke klien. Ini adalah: Mirip dengan client_info, tetapi akan kembali Fixnum, daripada kembali string.
8 dbh.func (: host_info) => String
Mengembalikan informasi host.
9 dbh.func (: proto_info) => Fixnum
Mengembalikan protokol yang digunakan untuk komunikasi.
10 dbh.func (: server_info) => String
Mengembalikan informasi MySQL versi server berbasis.
11 dbh.func (: Stat) => STRING M >
Mengembalikan keadaan saat ini database.
12 dbh.func (: thread_id) => Fixnum
Mengembalikan ID thread saat ini.

contoh

#!/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

Ini menghasilkan hasil sebagai berikut:

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