Ruby - МYsql как да се свържем
13-12-2011
Това е 'малко' продължение от предходният урок.
http://www.ruby-lang.org/bg/
Свалете Ruby , инсталирайте го, дайте отметки при стартирането на файлове и добавяне на разширенията.Няма нищо сложно, за туй няма наблягам.

След като напишем някакъв код , можем да го изпълним като напишем
ruby ./patch/files.rb

В терминала ( cmd - windows )

За да използваме базата данни (mysql server ) ще трябва да инсталираме добавката ( gem )
Това става по "супер сложният начин ".
За целта трябва да напишем в CMD / Терминал
gem install mysql

До тук няма нищо сложно.Нещата се свалят и инсталират сами.Имате възможност да update gem-овете и ruby със следният код
gem update

Инсталирането на gem-ове може да трае от няколко секунди до 1 минута.
// Искам да вметна , че можете и ръчно да инсталирате gamе's но този начин е по-бърз, по-лесен и шанса да се обърка нещо е значително по-малък.
След като вече имаме инсталирано ruby и гема за базата данни, ни трябва някакъв редактор.
Можете да използвате който искате текстов редактор.Netbeans има плъгин който можете да инсталирате, ако използвате него.Или да ползвате NotePad++.Това са двата редактора който ви препоръчвам.

За примерите по-долу ще използвам следната база данни за улеснение.

CREATE TABLE `test` (
`var` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `test` VALUES ('sadasdasd');
INSERT INTO `test` VALUES ('sdasda');
INSERT INTO `test` VALUES ('aaaaaaaaaaaaaaaa');
INSERT INTO `test` VALUES ('dddddddddddddddddddddddddddddq');
INSERT INTO `test` VALUES ('qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqddddd');



Създаваме файл/проект като в началото му декларираме какво ще използваме. В случая ще бъде само модула на ruby за mysql
За целта , непосредствено в началото на файла поставяме :
require "mysql"


След което се налага да направим инстанция и да зададем следната информация :
host , username , pass , database

Този конструктор се различава значително от старите познати функции в PHP.Тук селектирането и избора на таблица става още при инстанцията.
Ще я присвоим на някаква променлива за да ни е по-лесно.
my = Mysql::new("localhost", "root", "12", "test")

localhost - се пада моят локален сървър за mysql
root - ми е потребителското име
12 - паролата на потребителя за базата данни
test - db към която се свързвам.

След като сме се свързали се предполага,че ще искаме да изпълним някаква заявка.
// Погледнете уроците в сайта за mysql ако нямате представа за какво пиша :)))
Ще искаме да извадим всички резултати от таблицата 'test'
res = my.query("select * from test")

Какво прави този ред ? Свързва се с ФБР и ЦРУ и проверява да не сте някой теторист :D Шегувам се :)
Изпращаме нашата SQL заявка и присвояваме резултата.
Следващата логична стъпка е да видим какво съдържа 'test'.
За целта трябва да 'обходим' res защото той е масив.
Ако сте прочели и тренирали нещата от предният ми урок ще ви е напълно ясно какво правят следващите няколко реда :

res.each do |row|
puts row
end

Когато имаме много , ама много заявки , и то големи те остават в паметта и става крайно неприятно. Единственият начин да пазим паметта е да я изчистим като освободим заявките.
Това става като към променливата която държи резултатите добавим : free
res.free


След като вече знаем как да изкараме някаква информация от базата данни се предполага, че и потребителя ще иска да вкара някаква информация, то било име , парола , някакъв текст ....
Примера по-долу отново ще бъде свързан с таблицата по-горе. За целта понеже имаме едно поле можем да го направим така , че потребителя да записва примерно името си....
Какво ще ни трябва ?
Ще искаме да се показва някакъв текст който да приканва потребителя да въведе някаква информация ( примерно името ) и тя бъде записана в базата данни.И след това ще изкараме старите и новите записи , за да видим ,че всичко е наред.
Ще използваме метода gets който ще бъде присвоен от някаква применлива. Тази променлива ще държи всичко което потребителя напише и натисне ENTER.

puts "Enter your name"
name = gets
puts "Name is : #{name}"
my.query("INSERT INTO test (`var`) VALUES ('#{name}')")Тук сложете кода

Тук ще видите нещо , което може да смути някой от вас. А именно как се извиква някаква променлива в стринг. Ако използвате NetBeans автоматично ще бъде написано всичко автоматично.
За да се 'види' съдържанието на променливата в някакъв стринг се изписва #{var_name} и тя се появява. Надявам се да съм ви помогнал, и да сте разбрали нещо от урока.



* лек проблем с енкодинга :)))


/ Трябва да сте регистриран за да напишете коментар /