Mysql lazarus și baza de date de la lazarus

Numele lucrării: MySQL + Lazarus: Lucrare și bază de date de la Lazăr. TMySQL50Connection, TSQLTransaction, TSQLQuery - componente pentru lucrul cu baza de date







Domeniu: Informatică, Cibernetică și Programare

Descriere: 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. Plasați componentele TMySQL50Connection, TSQLTransaction, TSQLQuery din panoul SQLbd din formular; și o componentă TDatasource din panoul de acces date.

Mărime fișier: 937.82 KB

Lucrarea a fost descărcată: 99 de persoane.

Lucrare de laborator privind disciplina "Managementul datelor"

MySQL + Lazarus: Lucrul și baza de date de la Lazăr

TMySQL50Connection, TSQLTransaction, TSQLQuery # 150; 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.

Plasați componentele TMySQL50Connection, TSQLTransaction, TSQLQuery din panoul SQLbd din formular; și o componentă TDatasource din panoul de acces date.

Configurați conexiunile dintre aceste componente.

  1. În proprietatea Tranzacție a obiectului MySQL50Connection1, selectați SQLTransaction1 (nu am schimbat numele obiectului implicit).
  2. În proprietatea Baza de date a obiectului SQLQuery1, selectați MySQL50Connection1
  3. În proprietatea Tranzacție a obiectului SQLQuery1, selectați SQLTransaction1
  4. Î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.

Accesarea datelor utilizând interogări

Pentru a executa interogarea, trebuie să utilizați următorul cod:

SQLQuery1.SQL.Add ('Selectați * din ListCatalog;');

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:

SQLQuery1.SQL.Add ('INSERT INTO myArtTable (text, descriere, cuvinte cheie)

VALORI ( '+ # 39 + memo3.text + # 39 +', '+ # 39 + memo2.text + # 39 +', '+ # 39 + memo1.text + # 39 +') „);

Î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:

SQLQuery1.SQL.Add ('INSERT INTO myArtTable (text, descriere, cuvinte cheie)

VALORI ( '+ # 39 + memo3.text + # 39 +', '+ # 39 + memo2.text + # 39 +', '+ # 39 + memo1.text + # 39 +') „);

SQLQuery1.SQL.Text: = 'SELECT * din myArtTable;';

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 scrierea unui clic.

procedura TForm1.Button1Click (expeditor: TObject);







ShowMessage ("Nu se poate conecta la baza de date");

ShowMessage ("Eroare la executarea interogării SQL");

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

// SET caracter _ set _ results = 'cp 866'; / * stabilește codificarea datelor trimise clientului * /

// SET caracter _ set _ client = 'cp 866'; / * stabilește codificarea datelor trimise de OT * / clientului

// SET caracter _ set _ connection = 'utf 8' / * stabileste codificarea in care se convertesc informatiile provenite de la client, inainte de a executa cererea pe server. * /

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

procedura TForm1.FormDestroy (expeditor: TObject);

Navigare de date

Navigarea se bazează pe funcționarea 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. În proprietățile DataField ale obiectelor DBMemo1, vom scrie în mod corespunzător numele_catalogului. (în cazul în care Catalog_name # 150 este numele câmpurilor (coloanelor) din tabelul ListCatalog.)

Mysql lazarus și baza de date 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:

metodele de clasă TSQLQuery, destinate navigării în baza de date:

  1. TSQLQuery.Next # 150; mergeți înainte
  2. TSQLQuery.Prior # 150; mergeți la înregistrare înapoi
  3. TSQLQuery.First # 150; mergeți la prima înregistrare
  4. TSQLQuery.Last # 150; mergeți la ultima intrare
  5. TSQLQuery.Insert # 150; adăugați o intrare nouă
  6. TSQLQuery.Delete # 150; ștergeți postarea
  7. TSQLQuery.Edit # 150; traduceți setul de date în modul de editare
  8. TSQLQuery.Post # 150; salvați modificările aduse setului de date
  9. TSQLQuery.Refresh # 150; tabel de actualizare

Pentru a obține valorile câmpului înregistrării, puteți folosi metoda FieldByName (fn: string), unde fn # 150; numele câmpului (coloana) din tabel. 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

SQLStars: = # 146; Lazarus arde (# 145; cuvinte cheie # 146;); # 146 ;;

SQLQuery1.FieldByName (# 145; text # 146;) AsString: = # 146; Text nou # 146 ;;

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:

  1. datele sunt selectate dintr-un singur tabel;
  2. tabelul este supus modificării;
  3. interogarea nu utilizează funcțiile DISTINCT și funcțiile statice;
  4. Interogarea nu utilizează conexiuni de tabelă;
  5. nu există interogări și interogări imbricate în interogare;
  6. Nu utilizați gruparea de date;
  7. 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 execută 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.







Articole similare

Trimiteți-le prietenilor: