Mysql lazarus și baza de date dată pe serverul web de la lazarus

TMySQL50Connection, TSQLTransaction, TSQLQuery - componente pentru lucrul cu baza de date

Creați un proiect gol. În dosarul proiectului, trebuie să copiați DLL-ul pentru a lucra cu MySQL. Puteți descărca aici: libmysql.dll.







Pe serverul meu web rulează MySQL 5.03, prin urmare, ca urmare a celor mai bune practici descrise în articolul „Utilizarea SQLdb în Lazăr: elementele de bază de a lucra cu baze de date“, am pus sub formă de componente TMySQL50Connection, TSQLTransaction, TSQLQuery SQLbd a panoului; și o componentă TDatasource din panoul de acces date.

Vom stabili conexiuni între aceste componente.
  • În proprietatea Tranzacție a obiectului MySQL50Connection1, selectați SQLTransaction1 (nu am schimbat numele obiectului implicit).
  • În proprietatea Baza de date a obiectului SQLQuery1, selectați MySQL50Connection1
  • În proprietatea Tranzacție a obiectului SQLQuery1, selectați SQLTransaction1
  • În proprietatea DataSet a obiectului Datasource1, selectați SQLQuery1

Obiectele din clasa TSQLQuery sunt seturi de date. Încarcă o copie a tabelului de pe serverul de bază de date, cu care apoi se termină toată lucrarea.

TSQLQuery susține două moduri fundamental diferite de date accesare: navigare, care constă în tratarea fiecare intrări separate (curente) (rândurile) din tabel; și relațională, bazată pe procesarea unui grup de înregistrări simultan, prin interogări SQL.

Metoda relațională de acces la date

În primul rând, ne vom familiariza cu modul relațional de acces la date, în special vom analiza modalitățile de a executa interogări SQL. Întrebările SQL pot fi împărțite în două grupuri: cele care se întorc și nu returnează rezultatul. De exemplu, interogarea implică scrierea unei copii a tabelului myArtTable în setul de date. Pentru al executa, trebuie să utilizați următorul cod:

Mai întâi închidem setul de date SQLQuery1, sunând la metoda Close (puteți obține același rezultat prin setarea proprietății active la false). Dacă setul este închis, conexiunea la baza de date se încheie. Apoi ștergem proprietatea SQL folosind metoda Clear. Folosind metoda Add, scrieți textul interogării noi în ea. O interogare este executată când se execută comanda Deschidere, care traduce setul de date SQLQuery1 într-un mod deschis și scrie rezultatele interogării SQL către ea.

Dacă interogarea SQL nu implică întoarcerea tabelelor de date (interogări INSERT și UPDATE), trebuie să utilizați o modalitate alternativă de ao executa:

În același timp, apare o eroare când încercați să traduceți setul de date într-un mod deschis (executați SQLQuery1.Open;). Pentru a remedia acest lucru, trebuie fie să scrieți o nouă interogare la proprietatea SQL care returnează tabelul, după cum se arată mai jos:

Sau creați și utilizați pentru aceste interogări SQL un set de date separat (SQLQuery2), care nu este niciodată tradus într-un mod deschis.

Conectarea și deconectarea de la baza de date din Lazarus

Ne vom conecta la o bază de date la distanță, imediat, dar după ce a primit instrucțiuni explicite din partea utilizatorului (click pe butonul corespunzător), astfel încât setați proprietatea în Object Inspector componentă Sonnected TMySQL50Connection și proprietăți ale componentei active și TSQLTransaction TSQLQuery false.

Creați butonul "Conectați" din formular. În instrumentul de procesare a clicurilor, scriem:

Astfel, se face prima încercare de a se conecta la baza de date MySQL, în cazul în care este de succes, o nouă tranzacție, și apoi când activați obiectul SQLQuery1 care rulează interogarea bazei de date SQL care selectează toate rândurile din tabel. Înainte de a obține masa de la server, trebuie să configurați corespunzător codarea. În baza mea de date, datele sunt stocate în cp1251, așa că execut interogarea







Când deconectați de la baza de date, procedați în ordine inversă. Setați codul de deconectare în modulul de tratare a evenimentului OnDestroy al formularului

Căi navigabile de acces la date

Metoda de navigare implică lucrul secvențial cu înregistrările (rândurile) din tabelul din setul de date. Metoda de acces la navigare se bazează pe activitatea componentelor vizuale din fila "Controale date". Vom plasa pe formularul nostru componentele TDBGrid, TDBNavigator și trei componente ale TDBMemo. Și instalați în proprietățile lor DataSource o referință la DataSource1. Proprietățile DataField obiecte DBMemo1, DBMemo2, DBMemo3 descriere a scrie, de text și, respectiv, cuvintele cheie. (Vă reamintesc că descrierea, textul și cuvintele cheie. - este numele câmpurilor (coloane) din tabelul myArtTable) Deoarece setul nostru de date inițială este închisă (Acțiune = false), Lazăr va emite un avertisment dacă încercați să introduceți numele câmpurilor. Nu acordați atenție - acest lucru este normal.

Mysql lazarus și baza de date dată pe serverul web de la lazarus

Porniți programul și faceți clic pe butonul "Conectați ...". După conectarea la baza de date, tabelul primit de la server va fi afișat în obiectul DBGrid1. Săgeata din stânga indică înregistrarea curentă. Cu ajutorul butoanelor din panoul DBNavigator1, puteți naviga prin rândurile tabelului. De asemenea, puteți edita înregistrările, dar după închiderea programului, toate modificările efectuate vor fi resetate. Pentru a le salva în baza de date, trebuie să apelați metoda ApplyUpdates:

Iată metodele de clasă TSQLQuery pentru navigarea bazei de date:
  • TSQLQuery.Next - mergeți la scrierea înainte
  • TSQLQuery.Prior - mergeți să scrieți
  • TSQLQuery.First - mergeți la prima înregistrare
  • TSQLQuery.Last - mergeți la ultima intrare
  • TSQLQuery.Insert - adăugați o înregistrare nouă
  • TSQLQuery.Delete - ștergeți înregistrarea
  • TSQLQuery.Edit - convertiți setul de date în modul de editare
  • TSQLQuery.Post - salvați modificările aduse setului de date
  • TSQLQuery.Refresh - actualizați tabelul

În scopul de a obține valoarea unui câmp de înregistrare, puteți utiliza metoda FieldByName (fn: string), unde fn - numele câmpului (coloana) a tabelului. Aceeași metodă poate fi folosită pentru a scrie date noi într-un tabel. citește formatul / scriere este indicată de proprietăți AsString, AsInteger, AsFloat, AsDataTime, ... De exemplu, pentru a înregistra valoarea curentă a câmpului de identitate în etichetă, puteți utiliza codul:

Iată un exemplu de editare a rândului curent al unui tabel

Merită menționat faptul că nu toate seturile de date pot fi editate în mod navigativ. Pentru a obține setul editat ca urmare a unei interogări SQL (adică modificările pe care le-ați făcut ar putea fi salvate în baza de date), trebuie să îndepliniți următoarele condiții:
  • datele sunt selectate dintr-un singur tabel;
  • tabelul este supus modificării;
  • interogarea nu utilizează funcțiile DISTINCT și funcțiile statice;
  • Interogarea nu utilizează conexiuni de tabelă;
  • nu există interogări și interogări imbricate în interogare;
  • Nu utilizați gruparea de date;
  • sortarea se aplică numai câmpurilor index;

Utilizarea tranzacțiilor și TSQLTransaction în Lazarus

În general, mecanismul de tranzacționare este necesar pentru a păstra integritatea bazei de date. Să presupunem că, pentru a face date reale în baza de date, trebuie să scrieți o cantitate mare de informații în tabele diferite. În cazul în care energia electrică este oprită în timpul înregistrării, unele dintre tabele vor conține informații actuale și unele din cele vechi. Ca urmare, baza de date va fi coruptă. Mecanismul de tranzacționare ajută la evitarea acestui lucru. Dacă toate operațiile de scriere sunt de succes, tranzacția este considerată de succes și toate modificările tabelelor de baze de date sunt considerate confirmate. Dacă nu se efectuează cel puțin o operație de scriere, tranzacția este considerată nereușită, iar tabelele bazei de date sunt returnate în starea pe care au avut-o înainte de începerea tranzacției.

Pentru a lucra cu tranzacțiile din Lazarus, a fost adăugată componenta TSQLTransaction. Cu toate acestea, în prezent nu funcționează cu bazele de date MySQL. TSQLTransaction intră automat în starea activă când setul de date este deschis (TSQLQuery) și se închide atunci când se închide. Pentru a confirma în mod explicit succesul unei tranzacții, puteți utiliza metoda TSQLTransaction.Commit. Ar trebui să fie chemat imediat după TSQLQuerty.ApplyUpdates; Pentru a retrage o tranzacție, puteți utiliza metoda TSQLTransaction.Rollback.

concluzie

Deci, în acest articol, am încercat să îmi pun o mică experiență în lucrul cu baza de date MySQL de la Lazăr. Mecanismul de lucru cu alte baze de date în ansamblu nu diferă de cel descris aici.

Interogare SQL pentru a crea un tabel myArtTable







Trimiteți-le prietenilor: