Akses Pangkalan Data Ruby - Tutorial DBI
Bab ini akan menerangkan kepada anda cara menggunakan Ruby untuk mengakses pangkalan data. Modul Ruby DBI menyediakan antara muka bebas pangkalan data kepada skrip Ruby yang serupa dengan modul Perl DBI.
DBI bermaksud antara muka bebas pangkalan data, yang mewakili antara muka bebas pangkalan data Ruby. DBI menyediakan lapisan abstraksi antara kod Ruby anda dan pangkalan data asas, membolehkan anda melaksanakan penukaran pangkalan data dengan mudah. Ia mentakrifkan satu siri kaedah, pembolehubah dan spesifikasi, menyediakan antara muka pangkalan data yang konsisten yang bebas daripada pangkalan data.
DBI berinteraksi dengan:
ADO (ActiveX Data Objects)
DB2
-
Pangkalan hadapan
mSQL
MySQL
ODBC
Oracle
OCI8 (Oracle)
PostgreSQL
Proksi/Pelayan
SQLite
SQLRelay
Seni Bina Aplikasi DBI
DBI adalah bebas daripada mana-mana pangkalan data yang tersedia di bahagian belakang. Sama ada anda menggunakan Oracle, MySQL, Informix, anda boleh menggunakan DBI. Gambar rajah seni bina di bawah menggambarkan ini dengan jelas.
Seni bina umum Ruby DBI menggunakan dua lapisan:
Lapisan Antaramuka Pangkalan Data (DBI). Lapisan ini bebas daripada pangkalan data dan menyediakan satu siri kaedah capaian awam yang boleh digunakan tanpa mengira jenis pelayan pangkalan data.
Lapisan pemacu pangkalan data (DBD). Lapisan ini bergantung pada pangkalan data, dan pemacu yang berbeza menyediakan akses kepada enjin pangkalan data yang berbeza. MySQL, PostgreSQL, InterBase, Oracle, dsb. masing-masing menggunakan pemacu yang berbeza. Setiap pemandu bertanggungjawab untuk mentafsir permintaan daripada lapisan DBI dan memetakan permintaan ini kepada yang sesuai untuk jenis pelayan pangkalan data tertentu.
Pemasangan
Jika anda ingin menulis skrip Ruby untuk mengakses pangkalan data MySQL, anda perlu memasang modul Ruby MySQL terlebih dahulu.
Pasang pakej pembangunan Mysql
# Ubuntu sudo apt-get install mysql-client sudo apt-get install libmysqlclient15-dev # Centos yum install mysql-devel
Sistem Mac OS perlu mengubah suai ~/.bash_profile atau ~/.profile fail, tambah kod berikut:
MYSQL=/usr/local/mysql/bin export PATH=$PATH:$MYSQL export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
atau gunakan sambungan lembut:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Pasang DBI menggunakan RubyGems (disyorkan)
RubyGems telah dicipta sekitar November 2003 dan telah menjadi sebahagian daripada perpustakaan standard Ruby sejak Ruby versi 1.9. Untuk butiran lanjut, sila semak: Ruby RubyGems
Gunakan permata untuk memasang dbi dan dbd-mysql:
sudo gem install dbi sudo gem install mysql sudo gem install dbd-mysql
Gunakan kod sumber untuk memasang (versi Ruby kurang daripada 1.9, gunakan kaedah ini)
Modul tersebut ialah DBD dan boleh dimuat turun daripada http://tmtm.org/downloads/mysql/ruby/.
Muat turun pakej terkini, nyahzipnya dan masukkan direktori, laksanakan arahan berikut untuk memasang:
% ruby extconf.rb 或者 % ruby extconf.rb --with-mysql-dir=/usr/local/mysql 或者 % ruby extconf.rb --with-mysql-config
Kemudian susun:
% make
Dapatkan dan pasang Ruby/ DBI
Anda boleh memuat turun dan memasang modul Ruby DBI dari pautan di bawah:
https://github.com/erikh/ruby-dbi |
Sebelum memulakan pemasangan, sila pastikan anda mempunyai akses root. Sekarang, sila ikuti langkah di bawah untuk memasang:
Langkah 1
git clone https://github.com/erikh/ruby-dbi.git
Atau muat turun terus pakej zip dan nyahzipnya.
Langkah 2
Masukkan direktori ruby-dbi-master dan gunakan skrip setup.rb dalam direktori untuk mengkonfigurasi. Perintah konfigurasi yang paling biasa digunakan ialah parameter konfigurasi diikuti oleh tiada parameter. Perintah ini dikonfigurasikan untuk memasang semua pemacu secara lalai.
$ ruby setup.rb config
Secara lebih khusus, anda boleh menggunakan pilihan --dengan untuk menyenaraikan bahagian khusus yang ingin anda gunakan. Contohnya, jika anda hanya mahu mengkonfigurasi modul DBI utama dan pemacu lapisan MySQL DBD, masukkan arahan berikut:
$ ruby setup.rb config --with=dbi,dbd_mysql
Langkah 3
Langkah terakhir ialah mencipta pemacu dan memasangnya menggunakan arahan berikut:
$ ruby setup.rb setup $ ruby setup.rb install
Sambungan pangkalan data
Andaikan kami menggunakan pangkalan data MySQL Sebelum menyambung ke pangkalan data, sila pastikan:
. Anda telah mencipta pangkalan data TESTDB.
Anda telah mencipta jadual PEKERJA dalam TESTDB.
Jadual ini mempunyai medan FIRST_NAME, LAST_NAME, UMUR, JANTINA dan PENDAPATAN.
Tetapkan ID pengguna "testuser" dan kata laluan "test123" untuk mengakses TESTDB
Modul Ruby telah dipasang dengan betul pada DBI mesin anda.
Anda telah menonton tutorial MySQL dan memahami operasi asas MySQL.
Berikut ialah contoh menyambung ke pangkalan data MySQL "TESTDB":
#!/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
Apabila menjalankan skrip ini, ia akan dijalankan pada Linux Keputusan berikut dihasilkan pada mesin.
Server version: 5.0.45
Jika sambungan diwujudkan dengan sumber data, pemegang pangkalan data (Database Handle) akan dikembalikan dan disimpan ke dbh untuk kegunaan seterusnya, jika tidak dbh akan ditetapkan kepada nilai sifar, e.err dan e::errstr masing-masing mengembalikan kod ralat dan rentetan ralat.
Akhir sekali, sebelum keluar dari program ini, sila pastikan untuk menutup sambungan pangkalan data dan melepaskan sumber.
Operasi INSERT
Apabila anda ingin mencipta rekod dalam jadual pangkalan data, anda perlu menggunakan operasi INSERT.
Setelah sambungan pangkalan data diwujudkan, kami bersedia untuk mencipta jadual atau membuat sisipan ke dalam jadual data menggunakan kaedah do atau sediakan dan melaksanakan rekod kaedah.
Gunakan pernyataan do
Pernyataan yang tidak mengembalikan baris boleh dilakukan dengan memanggil kaedah pemprosesan pangkalan data do. Kaedah ini mengambil parameter rentetan pernyataan dan mengembalikan bilangan baris yang dipengaruhi oleh pernyataan.
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 )" );
Begitu juga, anda boleh melaksanakan pernyataan SQL INSERT untuk mencipta rekod untuk dimasukkan ke dalam jadual PEKERJA.
#!/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
Gunakan sediakan dan laksanakan
Anda boleh menggunakan DBI sediakan dan laksanakan kaedah untuk laksanakan pernyataan SQL dalam kod Ruby.
Langkah-langkah untuk mencipta rekod adalah seperti berikut:
Sediakan pernyataan SQL dengan pernyataan INSERT. Ini akan dilakukan menggunakan kaedah sediakan.
Laksanakan pertanyaan SQL untuk memilih semua hasil daripada pangkalan data. Ini akan dilakukan menggunakan kaedah laksana.
Lepaskan pemegang penyata. Ini akan dilakukan menggunakan API finish.
Jika semuanya berjalan lancar, komit tindakan itu, jika tidak, anda boleh putar balik untuk menyelesaikan transaksi.
Berikut ialah sintaks untuk menggunakan kedua-dua kaedah ini:
sth = dbh.prepare(statement) sth.execute ... zero or more SQL operations ... sth.finish
Dua kaedah ini boleh digunakan untuk menghantar nilai bind kepada SQL kenyataan. Kadangkala nilai yang dimasukkan mungkin tidak diberikan terlebih dahulu, dalam hal ini nilai terikat digunakan. Gunakan tanda soal (?) sebagai ganti nilai sebenar, yang dihantar melalui execute() API.
Contoh berikut mencipta dua rekod dalam jadual PEKERJA:
#!/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 berbilang INSERT digunakan pada masa yang sama, maka sediakan pernyataan dahulu dan kemudian melaksanakannya beberapa kali dalam gelung adalah lebih baik daripada Ia lebih cekap untuk membuat panggilan setiap kali dalam satu gelung.
Kendalian BACA
Operasi BACA pada mana-mana pangkalan data merujuk kepada mendapatkan maklumat berguna daripada pangkalan data.
Setelah sambungan pangkalan data diwujudkan, kami bersedia untuk menanyakan pangkalan data. Kita boleh mendapatkan nilai daripada jadual pangkalan data menggunakan kaedah do atau kaedah prepare dan execute.
Langkah-langkah untuk mendapatkan rekod adalah seperti berikut:
Sediakan pertanyaan SQL berdasarkan syarat yang diperlukan. Ini akan dilakukan menggunakan kaedah sediakan.
Laksanakan pertanyaan SQL untuk memilih semua hasil daripada pangkalan data. Ini akan dilakukan menggunakan kaedah laksana.
Dapatkan keputusan satu persatu dan keluarkan hasil ini. Ini akan dilakukan menggunakan kaedah fetch.
Lepaskan pemegang penyata. Ini akan dilakukan menggunakan kaedah finish.
Contoh berikut menanyakan semua rekod dengan gaji (gaji) melebihi 1000 daripada jadual PEKERJA.
#!/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 akan menghasilkan keputusan 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
Terdapat juga banyak cara untuk mendapatkan rekod daripada pangkalan data, jika anda berminat, anda boleh menyemak operasi Ruby DBI Read .
Kemas kini operasi
Kemas kini operasi pada mana-mana pangkalan data merujuk kepada mengemas kini satu atau lebih rekod sedia ada dalam pangkalan data. Contoh berikut mengemas kini semua rekod yang JANTINAnya ialah 'M'. Di sini kami akan menambah satu tahun kepada UMUR untuk semua lelaki. Ini akan dilakukan dalam tiga langkah:
Sediakan pertanyaan SQL berdasarkan syarat yang diperlukan. Ini akan dilakukan menggunakan kaedah sediakan.
Laksanakan pertanyaan SQL untuk memilih semua hasil daripada pangkalan data. Ini akan dilakukan menggunakan kaedah execute.
Lepaskan pemegang penyata. Ini akan dilakukan menggunakan kaedah finish.
Jika semuanya berjalan lancar, komit tindakan itu, jika tidak, anda boleh putar balik untuk menyelesaikan transaksi.
#!/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 PADAM
Apabila anda ingin memadamkan rekod daripada pangkalan data, anda perlu menggunakan operasi PADAM. Contoh berikut memadamkan semua rekod daripada PEKERJA dengan UMUR melebihi 20 tahun. Langkah-langkah untuk operasi ini adalah seperti berikut:
Sediakan pertanyaan SQL berdasarkan syarat yang diperlukan. Ini akan dilakukan menggunakan kaedah sediakan.
Laksanakan pertanyaan SQL untuk memadamkan rekod yang diperlukan daripada pangkalan data. Ini akan dilakukan menggunakan kaedah execute.
Lepaskan pemegang penyata. Ini akan dilakukan menggunakan kaedah finish.
Jika semuanya berjalan lancar, komit tindakan itu, jika tidak, anda boleh putar balik untuk menyelesaikan transaksi.
#!/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
Melaksanakan transaksi
Transaksi ialah mekanisme untuk memastikan konsistensi transaksi. Sesuatu urus niaga harus mempunyai empat atribut berikut:
Atomicity: Atomicity transaksi bermakna program yang disertakan dalam transaksi berfungsi sebagai logik Unit pangkalan data , semua operasi pengubahsuaian data yang dilakukannya sama ada dilakukan atau tidak dilakukan langsung.
Ketekalan: Ketekalan transaksi bermakna pangkalan data mesti berada dalam keadaan konsisten sebelum dan selepas transaksi dilaksanakan. Pangkalan data dikatakan konsisten jika keadaannya memenuhi semua kekangan integriti.
Pengasingan: Pengasingan transaksi bermakna transaksi serentak diasingkan antara satu sama lain, iaitu operasi dalam transaksi dan data yang dikendalikan mesti disekat sehingga ia tidak dapat dilihat oleh transaksi lain yang cuba mengubah suainya.
Ketahanan: Ketahanan transaksi bermakna memastikan kemas kini kepada transaksi yang dilakukan tidak boleh hilang apabila sistem atau kegagalan media berlaku. Iaitu, sebaik sahaja transaksi dilakukan, perubahannya kepada data dalam pangkalan data harus kekal dan menahan sebarang kegagalan sistem pangkalan data. Ketahanan dipastikan melalui sandaran dan pemulihan pangkalan data.
DBI menyediakan dua kaedah untuk melaksanakan transaksi. Salah satunya ialah kaedah commit atau rollback, yang digunakan untuk melakukan atau rollback transaksi. Terdapat juga kaedah transaksi, yang boleh digunakan untuk melaksanakan transaksi. Seterusnya, kami akan memperkenalkan dua kaedah mudah untuk melaksanakan urus niaga:
Kaedah I
Kaedah pertama menggunakan komit dan putar balik DBI 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
Kaedah II
Kaedah kedua menggunakan kaedah transaksi. Kaedah ini agak mudah kerana ia memerlukan blok kod yang mengandungi penyata yang membentuk urus niaga. Kaedah transaksi melaksanakan blok, dan kemudian secara automatik memanggil commit atau rollback bergantung pada sama ada blok itu berjaya dilaksanakan:
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
operasi KOMIT
Komit ialah operasi yang mengenal pasti bahawa perubahan pada pangkalan data telah selesai Selepas operasi ini, semua perubahan tidak boleh diterbalikkan.
Berikut ialah contoh mudah untuk memanggil kaedah komit.
dbh.commit
Operasi ROLLBACK
Jika anda tidak berpuas hati dengan satu atau beberapa perubahan dan anda ingin mengembalikan sepenuhnya perubahan ini, gunakan kaedah rollback.
Berikut ialah contoh mudah untuk memanggil kaedah balik semula.
dbh.rollback
Putuskan sambungan pangkalan data
Untuk memutuskan sambungan daripada pangkalan data, sila gunakan API putus sambungan.
dbh.disconnect
Jika pengguna menutup sambungan pangkalan data melalui kaedah putus sambungan, DBI akan melancarkan semula semua transaksi tertunggak. Walau bagaimanapun, tanpa bergantung pada sebarang butiran pelaksanaan DBI, aplikasi anda adalah baik dengan memanggil komit atau rollback secara eksplisit.
Mengendalikan Ralat
Terdapat banyak sumber ralat yang berbeza. Contohnya, terdapat ralat sintaks semasa melaksanakan pernyataan SQL, atau sambungan gagal, atau kaedah pengambilan dipanggil pada pemegang pernyataan yang dibatalkan atau lengkap.
Jika kaedah DBI gagal, DBI akan membuang pengecualian. Kaedah DBI boleh membuang sebarang jenis pengecualian, tetapi dua kelas pengecualian yang paling penting ialah DBI::InterfaceError dan DBI::DatabaseError.
Objek pengecualian kelas ini mempunyai tiga atribut: err, errstr dan state Sub-jadual mewakili nombor ralat, deskriptif Rentetan ralat dan kod ralat standard. Atribut diperincikan seperti berikut:
err: mengembalikan perwakilan integer bagi ralat yang berlaku, atau nil jika DBD tidak menyokongnya. Contohnya, Oracle DBD mengembalikan bahagian berangka mesej ralat ORA-XXXX.
errstr: Mengembalikan perwakilan rentetan ralat yang berlaku.
nyatakan: Mengembalikan kod SQLSTATE ralat yang berlaku. SQLSTATE ialah rentetan lima aksara. Kebanyakan DBD tidak menyokongnya, jadi tiada dikembalikan.
Dalam contoh di atas, anda telah melihat kod 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 maklumat penyahpepijatan tentang perkara yang skrip sedang dilaksanakan apabila ia dilaksanakan, anda boleh mendayakan menjejak. Untuk melakukan ini, anda mesti memuat turun modul dbi/trace dahulu dan kemudian memanggil kaedah trace yang mengawal mod surih dan destinasi output: Nilai mod
require "dbi/trace" .............. trace(mode, destination)
boleh menjadi 0 (mati ), 1, 2 atau 3, nilai destinasi hendaklah objek IO. Nilai lalai ialah 2 dan STDERR masing-masing. Blok kaedah
mempunyai beberapa kaedah untuk mencipta pemegang. Kaedah ini dipanggil melalui blok kod. Kelebihan menggunakan blok kod dengan kaedah ialah ia menyediakan blok kod dengan pemegang sebagai parameter, yang dikosongkan secara automatik apabila blok ditamatkan. Di bawah adalah beberapa contoh untuk membantu memahami konsep ini.
DBI.connect: Kaedah ini menjana pemegang pangkalan data, adalah disyorkan untuk memanggil putus sambungan di hujung blok untuk memutuskan sambungan pangkalan data.
dbh.prepare: Kaedah ini menjana pemegang pernyataan dan disyorkan untuk memanggil finish di hujung blok. Di dalam blok, anda mesti memanggil kaedah execute untuk melaksanakan pernyataan.
dbh.execute: Kaedah ini serupa dengan dbh.prepare, tetapi dbh.execute tidak memerlukan memanggil kaedah execute dalam blok. Pemegang penyata dilaksanakan secara automatik.
Instance 1
DBI.connect boleh mempunyai blok kod, menghantarnya ke pemegang pangkalan data, dan ia akan pecah secara automatik pada penghujung blok Buka pemegang.
dbh = DBI.connect("DBI:Mysql:TESTDB:localhost", "testuser", "test123") do |dbh|
Contoh 2
dbh.prepare boleh mengambil blok kod, memberikannya pemegang penyata dan penamat akan dipanggil secara automatik di hujung blok.
dbh.prepare("SHOW DATABASES") do |sth| sth.execute puts "Databases: " + sth.fetch_all.join(", ") end
Contoh 3
dbh.execute boleh mengambil blok kod, memberikannya pemegang penyata dan penamat akan dipanggil secara automatik di hujung blok. Kaedah
dbh.execute("SHOW DATABASES") do |sth| puts "Databases: " + sth.fetch_all.join(", ") end
DBI transaksi juga boleh mempunyai blok kod, yang telah dijelaskan dalam bab di atas.
Fungsi dan sifat khusus pemacu
DBI membenarkan pemacu pangkalan data menyediakan fungsi khusus pangkalan data tambahan, yang boleh digunakan oleh pengguna melalui kaedah fungsi objek Handle dipanggil.
Gunakan kaedah []= atau [] untuk menetapkan atau mendapatkan sifat khusus pemandu.
DBD::Mysql melaksanakan fungsi khusus pemacu berikut:
Nombor siri | Fungsi & Perihalan | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
| ||||||||||||||||||||||||||
2 | dbh.func(:dropdb, db_name)
| ||||||||||||||||||||||||||
3 | dbh.func(:reload) Lakukan operasi tambah nilai. | ||||||||||||||||||||||||||
4 | <🎜>dbh.func(:shutdown)<🎜> Tutup pelayan. | ||||||||||||||||||||||||||
5 | <🎜>dbh.func(:insert_id) => Fixnum<🎜> Mengembalikan nilai AUTO_INCREMENT terbaharu untuk sambungan itu. | ||||||||||||||||||||||||||
6 | <🎜>dbh.func(:client_info) => String<🎜> Kembalikan maklumat klien MySQL mengikut versi . | ||||||||||||||||||||||||||
7 | <🎜>dbh.func(:client_version) => Fixnum <🎜> Kembalikan maklumat klien mengikut versi. Ini serupa dengan :client_info, tetapi ia mengembalikan fixnum dan bukannya rentetan. | ||||||||||||||||||||||||||
8 | <🎜>dbh.func(:host_info) => | ||||||||||||||||||||||||||
9 | <🎜>dbh.func(:proto_info) => Fixnum<🎜> Mengembalikan protokol yang digunakan untuk komunikasi. | ||||||||||||||||||||||||||
10 | <🎜>dbh.func(:server_info) => String <🎜> Kembalikan maklumat sisi pelayan MySQL mengikut kepada versi. | ||||||||||||||||||||||||||
11 | <🎜>dbh.func(:stat) => Stringb> Mengembalikan status semasa pangkalan data. <🎜> | ||||||||||||||||||||||||||
12 | <🎜>dbh.func(:thread_id) => Fixnum<🎜> Mengembalikan urutan semasa ID. |
#!/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 akan menghasilkan keputusan 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<🎜>