English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل Ruby الأساسي

دليل Ruby المتقدم

الربط مع MySQL MySQL2

في الفصل السابق، قمنا بشرح استخدام Ruby DBI. في هذا الفصل، سنقوم بشرح كيفية استخدام أسرع محرك ربط Ruby مع Mysql، وهو mysql2، ويُنصح باستخدام هذا الأسلوب لربط MySql.

تثبيت محرك mysql2:

gem install mysql2

يجب عليك استخدام –with-mysql-config لتعيين مسار mysql_config، مثلًا: –with-mysql-config=/some/random/path/bin/mysql_config.

ربط

قواعد النصوص لربط قاعدة البيانات كالتالي:

client = Mysql2::Client.new(:host => "localhost", :username => "root")

المزيد من المعلمات يمكن الرجوع إليها http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html.

جستجو

results = client.query("SELECT * FROM users WHERE group='githubbers'")

تبدیل کاراکترهای خاص به فرم مناسب

escaped = client.escape("gi'thu\"bbe\0r's")
results = client.query("SELECT * FROM users WHERE group='#{escaped}'")

تعداد نتایج مجموعه بازگشتی محاسبه می‌شود:

results.count

نتایج تکرار شده:

results.each |row|
  # row یک دیکشنری است
  # کلیدها مقادیر فیلد‌های دیتابیس هستند
  # مقادیر همگی با داده‌های MySQL مطابقت دارند
  puts row["id"] # row["id"].class == Fixnum
  if row["dne"] # اگر وجود ندارد،则是 nil
    puts row["dne"]
  پایان
پایان

مثال آنلاین

#!/usr/bin/ruby -w
require 'mysql2'
 
client = Mysql2::Client.new(
    :host => '127.0.0.1', # میزبان
    :username => 'root', # نام کاربری
    :password => '123456', # رمز عبور
    :database => 'test', # دیتابیس
    :encoding => 'utf8' # کدگذاری
    )
results = client.query("SELECT VERSION()")
results.each |row|
  puts row
پایان

نتیجه خروجی اجرای مثال بالا به شرح زیر است:

{"VERSION()"=>"5.6.21"}

اتصال گزینه‌ها

Mysql2::Client.new(
  :host,
  :username,
  :password,
  :port,
  :database,
  :socket = '/path/to/mysql.sock',
  :flags = REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION | MULTI_STATEMENTS,
  :encoding = 'utf8',
  :read_timeout = seconds,
  :write_timeout = seconds,
  :connect_timeout = seconds,
  :reconnect = true/false,
  :local_infile = true/false,
  :secure_auth = true/false,
  :default_file = '/path/to/my.cfg',
  :default_group = 'my.cfg section',
  :init_command => sql
  )

لمعرفة المزيد من المعلومات، يرجى الرجوع إلى:http://www.rubydoc.info/gems/mysql2/0.2.3/frames.