ПредишенСледващото

TMySQL50Connection, TSQLTransaction, TSQLQuery - компоненти за работа с база данни

Създаване на празен проект. В папката на проекта, трябва да копирате DLL за работа с MySQL. Можете да го изтеглите от тук: libmysql.dll.

На моя уеб сървър е стартиран MySQL 5.03, следователно, следвайки най-добрите практики, описани в статията "Използване SQLdb в Лазар: основите на работа с бази данни", сложих под формата на компоненти TMySQL50Connection, TSQLTransaction, TSQLQuery SQLbd на панела; TDatasource компонент и от панел Data Access.

Конфигуриране на връзката между тези компоненти.
  • Имотът на обекта на транзакциите MySQL50Connection1 изберете SQLTransaction1 (I не се промени по подразбиране, определен да се противопостави имена).
  • Имотът на база данни обект SQLQuery1 изберете MySQL50Connection1
  • Имотът на даден обект, изберете транзакция SQLQuery1 SQLTransaction1
  • Имотът на изберете SQLQuery1 на масива Datasource1

TSQLQuery клас обекти представляват набори от данни. Той е натоварен с копие от таблицата на сървъра на базата данни, която след това се извършва цялата работа.

TSQLQuery поддържа две коренно различни начини за достъп до данни: навигация, която се състои в лечение на всеки отделен (текущи) записи (редове) на масата; и релационни въз основа на обработката на група от записи веднага чрез SQL-заявки.

метод на релационна достъп до данни

Да видим първо метод релационна достъп до данни, по-специално, помислете за начини да се изпълняват SQL заявки. SQL заявки могат да бъдат разделени на две групи: за връщане и не върна резултати. Така например, по искане включва влизане в данните маса myArtTable копия. За изпълнението му трябва да използвате кода:

Ние първо затворете набор от данни SQLQuery1, причинявайки му метод Close (Същият резултат може да се постигне чрез създаване на активен имота невярно). Ако устройството е затворен, връзката с базата данни е счупен. След това изчистете SQL имота, като се използва методът Clear. Използва се методът за добавяне пише текста на новия искането. В изпълнение на искането на командата Open, което се превежда SQLQuery1 набор от данни в отворен режим и записва резултатите от заявката за SQL.

Ако отчета за SQL не означава връщане към таблиците с данни (въвежда и актуализира запитвания), трябва да се използва алтернативен метод за неговото изпълнение:

В същото време, когато се опитате да преведете набор от данни в отворен режим (работи SQLQuery1.Open) възниква грешка. За да го премахне, ще трябва или да бъде написана на SQL собственост на новата заявка, която връща на маса, както е показано по-долу:

Или, за да създавате и използвате отделен набор от данни (SQLQuery2) за такива SQL заявки, които никога няма да се трансформират в отворения режим.

Включване и изключване от бази данни в Lazarus

Ние ще се свърже с отдалечена база данни веднага, но след като получи изрични инструкции от страна на потребителя (кликнете върху съответния бутон), така настроен имота в обекта инспектор Sonnected TMySQL50Connection компонент и свойства на активния компонент и TSQLTransaction TSQLQuery да лъжа.

Да се ​​създаде форма върху бутона "Connect". В манипулатор, кликнете пиши:

По този начин, е направен първият опит да се свърже с базата MySQL, ако тя е успешна, новата сделка, а след това, когато активирате обекта SQLQuery1 пускате заявка SQL база данни, която селектира всички редове от таблицата. Преди да получите маса от сървъра, трябва правилно да конфигурирате кодирането. В моята база данни данни се съхраняват в cp1251 за кодиране, така че аз изпълнява заявки

При изключване от базата данни в обратен ред. Нека да започна с формата код OnDestroy на събитието манипулатор

Методът за навигация на достъп до данните

Методът за навигация предполага безпроблемна работа с записи (редове) на таблицата в масива от данни. Методът за навигация на достъпа въз основа на визуален елемент от работата на «данни Controls» раздел. Мнение нашата форма компоненти TDBGrid, TDBNavigator и три TDBMemo компонент. И зададен DataSource собственост, за да се свържат DataSource1. Свойствата DataField обекти DBMemo1, DBMemo2, DBMemo3 описание запис, съответно текст и ключови думи. (Напомням ви, че описанието, текстът и ключови думи -. Е името на полета (колони) в таблицата myArtTable) Тъй като нашата първоначална набор от данни е затворен (действие = невярно), Лазар ще издаде предупреждение, ако се опитате да въведете имената на полетата. Не обръщайте внимание - това е нормално.

Mysql Лазар работа и като се основе на уеб сървъра на Лазар

Стартирайте програмата и кликнете Кноп "Connect ...". След свързването на масата за база данни е получена от сървъра се показва в обекта DBGrid1. Arrow лявата изразят текущия запис. можете да се придвижвате в редовете на една маса с DBNavigator1 панел. Можете също да редактирате записите, но всички направени промени ще бъдат нулирани след приключване на програмата. За да ги запишете в базата данни, трябва да се обадите метод ApplyUpdates:

Тук е TSQLQuery методи на клас да се придвижвате в базата данни:
  • TSQLQuery.Next - давай на запис
  • TSQLQuery.Prior - отидете пишете
  • TSQLQuery.First - отидете на първия запис
  • TSQLQuery.Last - отидете на последния запис
  • TSQLQuery.Insert - добавяне на нов запис
  • TSQLQuery.Delete - изтриване на записа
  • TSQLQuery.Edit - за прехвърляне на данните, посочени в режим на редактиране
  • TSQLQuery.Post - съхраняване на промените в набора от данни
  • TSQLQuery.Refresh - актуализация на маса

За да се получи стойността на запис поле, можете да използвате метод FieldByName (бел: низ), където бел - наименование на областта (колона) на масата. Същият метод може да се използва, за да пише нови данни към таблицата. четене формат / запис е обозначено с AsString имоти, AsInteger, AsFloat, AsDataTime ... Например, за да запишете текущата стойност на полето за номер на етикета, можете да използвате кода:

Ние също така да даде пример за редактиране на текущия ред на таблицата

Заслужава да се отбележи, че не всеки набор от данни, можете да редактирате метод за навигация. (Т.е. такава, че промените могат да бъдат запазени в базата данни), за да доведе до по-SQL заявка може да се редактира комплект, трябва да отговарят на следните условия:
  • данни са избрани от само една таблица;
  • маса позволява модификация;
  • искането не използва различни и статични функции;
  • искането не се отнася присъедини маси;
  • В заявката ви липсва подзаявки и подзаявки;
  • не се използва групиране на данни;
  • сортиране се прилага само за областта на индекса;

Използването Транзакциите и TSQLTransaction в Lazarus

Като цяло, механизъм за сделка е необходимо да се запази целостта на базата данни. Да кажем, за извършване на данни в реално време към базата данни, която искате да запишете в различни таблици на голямо количество информация. Ако изключите електроенергията, от страна на масите ще съдържа актуална информация, както и някои стари записи в процеса. В резултат на това, базата данни е повреден. Това ви позволява да се избегнат механизма за транзакция. Ако всичко операцията за запис завършва успешно, сделката се счита за успешна, както и всички промени в таблиците в базата данни се считат за потвърдени. Ако поне един запис на операцията не се извършва, сделката се счита за неуспешно и таблицата на базата данни се връща на държавата, те са имали преди сделката започна.

За да работите с транзакции в Лазар добавена TSQLTransaction компонент. Въпреки това, той в момента не работи с MySQL бази данни. TSQLTransaction автоматично става активен при отваряне на набор от данни (TSQLQuery) и се затваря, когато той е затворен. За да изрично да потвърди успеха на сделката може да се използва метод TSQLTransaction.Commit. Причина тя да бъде веднага след TSQLQuerty.ApplyUpdates; За да се откажете от сделката, можете да използвате метод TSQLTransaction.Rollback.

заключение

Така че, в тази статия аз се опитах да се съберат малко опит, за да работи с MySQL от Лазар. Механизмът работи с други бази данни, като цяло не се различават от тези, описани тук.

SQL заявка за създаване на таблица myArtTable

Подкрепете проекта - споделете линка, благодаря!