Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
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.newMysqlRes.each_hashqueryМодуль состоит из четырех классов (
MysqlMysqlResMysqlFieldMysqlErrorМетод класса
Mysql.newnilhostuserpasswddbportsockflagnewreal_connectconnectМетоды
create_dbselect_dbdrop_dbclosem=Mysql.new("localhost","ruby","secret")m.create_db("rtest") # Создать новую базу данных.m.select_db("rtest2") # Выбрать другую базу данных.in.drop_db("rtest") # Удалить базу данных.m.close # Закрыть соединение.В последних версиях методы
create_dbdrop_dbclass Mysql def create_db(db) query("CREATE DATABASE #{db}") end def drop_db(db) query("DROP DATABASE #{db}") endendМетод
list_dbsdbs = m.list_dbs # ["people","places","things"]Метод
queryMysqlResquery_with_resultMysqlЕсли произошла ошибка, то ее номер можно получить, обратившись к методу
errnoerrorbegin 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_fieldsMysqlField•
fetch_row•
fetch_hash(with_table=false)•
num_rows•
each•
each_hash(with_table=false){имя_поля => значение_поля}x['имя_поля']Вот некоторые методы экземпляра, определенные в классе
MysqlField
