Программирование на языке 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.new
MysqlRes.each_hash
query
Модуль состоит из четырех классов (
Mysql
MysqlRes
MysqlField
MysqlError
Метод класса
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