Книга: Программирование на языке Ruby
10.4.2. Интерфейс с MySQL
10.4.2. Интерфейс с MySQL
Интерфейс Ruby с MySQL — один из самых стабильных и полнофункциональных среди всех интерфейсов с базами данных. Это расширение, которое должно устанавливаться после инсталляции Ruby и MySQL.
Для использования модуля нужно выполнить три шага: прежде всего, загрузить модуль в свой сценарий, затем установить соединение с базой данных и, наконец, начать работать с таблицами. Для установления соединения следует задать обычные параметры: имя хоста, имя пользователя, пароль, имя базы данных и т.д.
require 'mysql'
m = Mysql.new("localhost","ruby","secret","maillist")
r = m.query("SELECT * FROM people ORDER BY name")
r.each_hash do |f|
print "#{f['name']} - #{f['email']}"
end
# Выводится что-то вроде:
# John Doe - [email protected]
# Fred Smith - [email protected]
Особенно полезны методы класса Mysql.new
и MysqlRes.each_hash
, а также метод экземпляра query
.
Модуль состоит из четырех классов (Mysql
, MysqlRes
, MysqlField
и MysqlError
), описанных в файле README. Мы приведем сводку некоторых наиболее употребительных методов, а дополнительную информацию вы сможете найти сами в официальной документации.
Метод класса Mysql.new
принимает несколько строковых параметров, которые по умолчанию равны nil
, и возвращает объект, представляющий соединение. Параметры называются host
, user
, passwd
, db
, port
, sock
и flag
. У метода new
есть синонимы real_connect
и connect
.
Методы create_db
, select_db
и drop_db
принимают в качестве параметров имя базы данных и используются, как показано ниже. Метод close
закрывает соединение с сервером.
m=Mysql.new("localhost","ruby","secret")
m.create_db("rtest") # Создать новую базу данных.
m.select_db("rtest2") # Выбрать другую базу данных.
in.drop_db("rtest") # Удалить базу данных.
m.close # Закрыть соединение.
В последних версиях методы create_db
и drop_db
объявлены устаревшими. Но можно «воскресить» их, определив следующим образом:
class Mysql
def create_db(db)
query("CREATE DATABASE #{db}")
end
def drop_db(db)
query("DROP DATABASE #{db}")
end
end
Метод list_dbs
возвращает список имен доступных баз данных в виде массива.
dbs = m.list_dbs # ["people","places","things"]
Метод query
принимает строковый параметр и по умолчанию возвращает объект MysqlRes
. В зависимости от заданного значения свойства query_with_result
может также возвращаться объект Mysql
.
Если произошла ошибка, то ее номер можно получить, обратившись к методу errno
. Метод error
возвращает текст сообщения об ошибке.
begin
r=m.query("create table rtable
(
id int not null auto_increment,
name varchar(35) not null,
desc varchar(128) not null,
unique id(id)
)")
# Произошло исключение...
rescue
puts m.error
# Печатается: You have an error in your SQL syntax
# near 'desc varchar(128) not null ,
# unique id(id)
# )' at line 5"
puts m.errno
# Печатается 1064
# ('desc' is reserved for descending order)
end
Ниже перечислено несколько полезных методов экземпляра, определенных в классе MysqlRes
:
• fetch_fields
возвращает массив объектов MysqlField
, соответствующих полям в следующей строке;
• fetch_row
возвращает массив значений полей в следующей строке;
• fetch_hash(with_table=false)
возвращает хэш, содержащий имена и значения полей в следующей строке;
• num_rows
возвращает число строк в результирующем наборе;
• each
— итератор, последовательно возвращающий массив значений полей;
• each_hash(with_table=false)
— итератор, последовательно возвращающий хэш вида {имя_поля => значение_поля}
(пользуйтесь нотацией x['имя_поля']
для получения значения поля).
Вот некоторые методы экземпляра, определенные в классе MysqlField
:
• name
возвращает имя поля;
• table
возвращает имя таблицы, которой принадлежит поле;
• length
возвращает длину поля, заданную при определении таблицы;
• max_length
возвращает длину самого длинного поля в результирующем наборе;
• hash
возвращает хэш с именами и значениями следующих элементов описания: name
, table
, def
, type
, length
, max_length
, flags
, decimals
.
Если изложенный здесь материал противоречит онлайновой документации, предпочтение следует отдать документации. Более подробную информацию вы найдете на официальном сайте MySQL (http://www.mysql.com) и в архиве приложений Ruby.
- Графические средства
- Мир без Солнца, или бессмертна ли мафия?
- Доступ к данным приложения из программы на С
- 4.15.2. Подключение стримера с интерфейсомFDC
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- 5.21 IP-адреса, интерфейсы и множественное пребывание
- Множественные интерфейсы и имена методов
- 2.1 Интерфейс SCSI
- 2.2 Интерфейсы IDE, EIDE и АТА
- 7.2 Интерфейс WMI
- 7.5 Программные интерфейсы приложений для адаптеров шины
- Не допускайте того, чтобы поток пользовательского интерфейса блокировался на длительное время