internetul Windows. Android

Solicitări dinamice de construcție. Clădirea interogării dinamice Crearea cererilor în Visual Studio C

În acest articol veți afla ce este LINQ și cum să faceți cereri pentru liste cu acesta.

Ce este linq? Interogarea integrată a limbii (LINQ) este limba solicitărilor integrate și, mai precis un proiect Microsoft ambiguu pentru a adăuga cereri de SQL similare cu SQL. Definiție specifică, cu acest instrument, puteți crea relativ pur și simplu cereri către tabele și liste de date, nu neapărat în baza de date.

În exemplele de la Microsoft, un element mic, dar important este trecut cu vederea. Pentru a lucra cu un set de date, trebuie să folosim structura Datacontext, definiția care poate fi obținută utilizând spmetal.exe pentru o listă sau o bibliotecă prezentă pe serverul SharePoint. Cu alte cuvinte, trebuie mai întâi să determinăm acest tip de date și apoi să creați o cerere recomandăm să utilizați utilitate specială Pentru a lucra în MVS: Imtech obține extinderea definiției spmetalului.

Pentru a lucra, vom avea nevoie de o listă. Folosim o listă simplă - "Listă personalizabilă"; Numele este "recursul simplu"; Domenii implicite: număr, nume.

Și așa, să creăm o simplă (vezi pagina potrivită), cu care vom respecta rezultatul manipulărilor noastre. La crearea unui proiect, alegeți un model de încredere izolat, dacă aveți nevoie să lucrați cu liste sau date de alte noduri, atunci trebuie să creați un proiect pentru o fermă.

Apoi, creați o clasă de fișiere "Sortare .CS" utilizând spmetal.exe sau plugin pentru studio. Adăugați un link către biblioteca Microsoft.sharepoint.linq. Pentru mai multe informații, vizitați MSDN.

Creați o caracteristică Render și My_mess. În ultima funcție, vom genera date pentru a fi afișate.

// supraîncărcați funcția
pROTECTEREA DE PRODUSE DE PRODUSE (HTMLTEXTWRITER scriitor)
{
baza .Render (scriitor);
My_mess (scriitor);
}

// caracteristica noastră pentru a lucra cu o listă
public Void My_mess (HtmltextWriter Writer)
{
// creați context
DataContext Data \u003d Noul Datactext ("http: // localhost");
// le conectăm cu lista corespunzătoare de pe site la rădăcină
Entitylist.<Элемент> Simple_message \u003d Data.getlist.<Элемент>("Apel ușor");
// Efectuați o cerere - Selectați toate liniile din lista "Simple Apel"
vary vary \u003d de la mesajul în simple_message
selectați mizerie;
// afișați toate datele din rezultatul interogării
foreach (var elem în interogare)
{
Writer.Writeline ( "Element de listă:" + Elem. Nutrition.tostring ());
writer.witebreak ();
}

}

Finalizați proiectul și adăugați la pagină. Ca rezultat, toate liniile se află pe listă vor fi afișate.

A continuat mai târziu (articolul nu este terminat) ...

În fereastra Server Explorer, unde sunt prezentate tabelele bazei de date pe Microsoft SQL Server Sub forma unui copac (vezi figura 4.1), Pentru fiecare tabel, puteți deschide o fereastră apăsând butonul Date de tabel Afișare. Această fereastră oferă posibilitatea de a edita datele tabelului. Se pare că această fereastră de editare este aproximativ așa cum este reprezentată în fig. 4.2. Aproximativ deoarece volumul total nu a intrat în minte în minte numărul mare de coloane.

      1. Implementarea afișajului bazei de date

Afișarea unei baze de date (componentă de date) este necesară pentru a exclude accesul suplimentar la baza de date și la server. Aceasta este o caracteristică foarte importantă, deoarece dacă există mulți utilizatori cu baza de date, sarcina serverului poate fi destul de mare - numărul de solicitări de multe ori mai mare, ceea ce va duce la o încetinire a executării cererilor.

Prin urmare, în detrimentul setului de date de pe computerul clientului, baza de date este afișată cu care funcționează. La finalizarea bazei și serverului clientului sunt sincronizate (sau mai degrabă, modificările făcute în baza de date client) sunt făcute la baza de server)

Afișează baza noastră de date pe MS Visual Studio 2005 după cum urmează:

Toate datele numerice au un tip INT32, șir. Dimensiunile datelor de șir corespund celor prezentate în modelul fizic al bazei de date.

Arată că există și table de tabel în fiecare masă. Acesta este un fel de poduri pentru conexiunea de date și sursa de date. Aici sunt tehnicile cum ar fi umplerea și getdata ()

Această metodă este concepută pentru a umple tabelul cu datele dorite din sursă (fișier de bază de date)

    OBȚINEȚI DATE ()

Concepute pentru a lua date din tabelul de afișare.

    1. Implementarea software-ului

Caracteristica principală în implementarea software-ului este faptul că toate clasele responsabile pentru editarea tabelelor bazei de date sunt moștenite de la o clasă de bază, care ne oferă comoditate în implementări. Metodele acestei clase de bază au fost descrise mai sus. Metodele virtuale de bază de clasă trebuie blocate în clasa descendentă. Toate aceste metode vă permit să modificați parametrii cum ar fi: numele antetului de formă, umplerea și salvarea tabelului bazei de date dorite (un descendent de timp funcționează numai cu un singur tabel, în sensul editării datelor; cu toate acestea, atunci când datele sunt afișate , este posibil să utilizați mai multe tabele de bază de date pentru a afișa date în formularul ușor de utilizat).

      1. Interfața programului

Fereastra principală este aplicația MDI care are următorul meniu:

Fiecare dintre tabelele pentru a edita baza de date este numită de elementul de meniu corespunzător "Tabele".

Raportul de încărcare privind profesorii este, de asemenea, creat făcând clic pe elementul de meniu corespunzător "Rapoarte".

Ca o capacitate suplimentară de software, există un element de meniu "consolă", care vă permite să executați solicitările de bază de date SQL introduse de utilizator și să transmită rezultatul în tabel (componenta de date). Pentru aceasta, desigur, este necesar să se cunoască numele tabelelor și câmpurilor și, mai ales, a fost creat în scopul comodității în implementarea software-ului, dar și alți utilizatori "dedicați" pot fi de asemenea utilizați.

Exemplu de creare a unei baze de date locale Microsoft SQL. Server B.MS Visual Studio.

Acest subiect afișează soluția sarcinii de bază de date SQL Server utilizând MS Visual Studio. Următoarele întrebări sunt luate în considerare:

  • lucrul cu fereastra Server Explorer din Studioul MS Visual;
  • crearea unei baze de date locale de bază de date SQL Server;
  • crearea de tabele în baza de date;
  • editarea structurilor de tabel;
  • legarea tabelelor de bază de date între ele;
  • efectuarea datelor în tabelele MS Visual Studio.

Sarcina

Utilizarea MS Visual Studio pentru a crea o bază de date MS SQL Server numit Educație. Baza de date conține două mese de student și sesiune. Tabelele între ele sunt legate de o clemă.

Structura primului tabel "Student".

Structura celei de-a doua mese "sesiune".

Performanţă

1. Descărcați MS Visual Studio.

2. Activațifereastră Server Explorer.

Pentru a lucra cu baze de date, Microsoft oferă un server de bază de date ușoare datele Microsoft. SQL Server. Exista diferite versiuni Microsoft SQL Server, de exemplu: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 și alte versiuni.

Puteți descărca aceste versiuni de pe site-ul Microsoft www.msdn.com.

Acest server este minunat pentru a lucra cu baze de date. Este gratuit și are o interfață grafică pentru crearea și administrarea bazelor de date utilizând instrumentul SQL Server Management.

În primul rând, înainte de a crea o bază de date, trebuie să activați utilitarul Server Explorer. Pentru aceasta, în MS Visual Studio trebuie să sunați (figura 1)

Vizualizare -\u003e Server Explorer

Smochin. 1. Call Server Explorer

După ce a apelat, fereastra Server Explorer va avea o vedere aproximativă, așa cum se arată în figura 2.

Smochin. 2. Fereastra Explorer Server

3. Crearea unei baze de date "Educație".

Pentru a crea o nouă bază de date bazată pe furnizorul de date Microsoft SQL Server, trebuie să faceți clic pe nodul de conexiuni de date și apoi să alegeți " Creați o bază de date SQL Server ..."(Fig.3).

Smochin. 3. Apelarea comenzii de creare a bazei de date SQL Server

Ca rezultat, fereastra se deschide Creați o bază de date SQL Server"(Figura 4).

În fereastră (în câmpul Nume server) indică numele server local.instalat pe computer. În cazul nostru, acesta este numele "sqlexpress".

În câmpul "Nume de bază de date:", este specificat numele bazei de date generate. În cazul nostru, acesta este numele educației.

Opțiunea Utilizare Windows Autentificare trebuie lăsată neschimbată și apăsați butonul OK.

Smochin. 4. Crearea baza nouă SQL Server 2008 Exprima date cu MS Visual Studio 2010

După efectuarea acțiunilor efectuate, fereastra Server Explorer are vedere, așa cum se arată în Figura 5. După cum se poate observa din Figura 5, baza de date educațională este adăugată pe lista de baze de date existente.

sasha-PC \\ sqlexpress.education.dbo

Smochin. 5. Fereastra Explorer Server după adăugarea bazei de date educaționale

4. Obiectele bazei de date educaționale.

Dacă desfășurați baza de date educațională (semnul "+"), puteți vedea o listă cu următoarele obiecte principale:

  • Diagrame de bază de date - Diagrame de baze de date. Graficele arată legăturile dintre tabelele de bază de date, relațiile dintre câmpurile de tabele diferite etc.;
  • Tabele - tabele în care sunt plasate datele bazei de date;
  • Vizualizări - Prezentări. Diferența dintre vizualizări și tabele este că tabelele bazei de date conțin date, iar reprezentările de date nu le conțin și conținutul este selectat din alte tabele sau reprezentări;
  • Proceduri stocate - Proceduri stocate. Acestea reprezintă un grup de operatori conexe în SQL, care oferă o flexibilitate suplimentară atunci când lucrează cu baza de date.

5. Crearea unui tabel student.

În prezent, baza de date educațională este absolut goală și nu conține obiecte (mese salvate, vizualizări etc.).

Pentru a crea un tabel, trebuie să apelați meniul contextual (faceți clic dreapta pe clic) și selectați comanda "Adăugați o nouă tabel" (Figura 6).

Smochin. 6. O comandă de adăugare a unui nou tabel

Există o altă opțiune de adăugare a unei tabele de bază de date utilizând comenzile de meniu de date:

Date -\u003e Adăugați Nou -\u003e Tabel

Smochin. 7. Opțiune alternativă Adăugările unui nou tabel

Ca rezultat, fereastra Adăugați tabelul se va deschide, care conține trei coloane (Figura 8). În prima coloană "Nume coloană" trebuie să introduceți numele câmpului corespunzător al tabelului bazei de date. În cea de-a doua coloană "Tip de date" trebuie să introduceți tipul de date al acestui câmp. În cea de-a treia coloană "Permiteți nulls" indică opțiunea legate de absența datelor din câmp.

Smochin. 8. Fereastră Creați o masă nouă

Folosind editorul de tabel, trebuie să formați tabelul Student așa cum este descris în Figura 9. Numele tabelului trebuie să fie setat când este închis.

În editorul de tabel, puteți seta proprietățile câmpului în fereastra Proprietăți coloană. Pentru a seta lungimea șirului (NVCHAR) în caracterele din fereastra Proprietăți coloană, există o proprietate de lungime. În mod implicit, valorile acestei proprietăți sunt 10.

Smochin. 9. Student de masă

Următorul pas trebuie să setați câmpul cheie. Acest lucru se face apelând comanda "Set primar" de la meniul contextual Câmpuri num_book. Utilizarea câmpurilor cheie vor fi instalate comunicarea între tabele. În cazul nostru, câmpul cheie este numărul de carte de testare.

Smochin. 10. Setarea câmpului cheie

După instalarea cheii primare, fereastra de masă va fi vizualizată așa cum este descrisă în Figura 11.

Smochin. 11. Student de masă după formarea finală

Acum puteți închide masa. În fereastra de salvare, trebuie să specificați numele - student (figura 12).

Smochin. 12. Introduceți numele tabelului elevului

6. Crearea unui tabel de sesiune.

Eșantionul elevului Crearea sesiunii de masă este creată.

Figura 13 prezintă vizualizarea tabelului de sesiune după formarea finală. Cheia primară (cheia primară) este instalată în câmpul Num_book. Numele tabelului specifică sesiunea.

Smochin. 13. Tabelul de sesiune

După ce acțiunile efectuate, două mese de student și sesiune vor fi afișate în fereastra Server Explorer.

Astfel, orice număr de tabele poate fi adăugat în baza de date.

7. Editarea structurii tabelului.

Există cazuri atunci când trebuie să modificați structura tabelului bazei de date.

Pentru a efectua modificări la tabelul bazei de date din studioul MS Visual, trebuie mai întâi să eliminați opțiunea "Preveniți salvarea modificărilor care necesită re-crearea tabelului"După cum se arată în Figura 14. În caz contrar, MS Visual Studio va bloca modificările la tabelul creat anterior. Fereastra de opțiuni prezentată în Figura 14 se numește din meniul Instrumente într-o astfel de secvență:

Instrumente -\u003e Opțiuni -\u003e Instrumente de bază de date -\u003e Designeri de masă și baze de date

Smochin. 14. Opțiune " Preveniți salvarea modificărilor care necesită re-crearea tabelului

După setare, puteți schimba structura tabelului. Pentru a face acest lucru, utilizați comanda "Definiție a tabelului deschis" (Figura 15) din meniul contextual, care este apelat pentru tabelul selectat (clic dreapta).

Smochin. 15. Apelarea comenzii "Definiție a tabelului deschis"

De asemenea, această comandă este localizată în meniul Date:

Date -\u003e Definiție a tabelului deschis

Pre-tabela trebuie subliniată.

8. Stabilirea conexiunilor între tabele.

În conformitate cu starea sarcinii, tabelele sunt conectate între câmpul Num_book.

Pentru a crea o conexiune între tabele, aveți nevoie prima (Figura 16):

  • selectați obiectul diagramei bazei de date;
  • selectați comanda Adăugați o nouă diagramă din meniul contextual (sau din meniul de date).

Smochin. 16. Apelarea unei echipe de adăugare a unei noi diagrame

Ca rezultat, se va deschide o fereastră pentru adăugarea unei noi diagrame de tabel de adăugare (Figura 17). În această fereastră, selectați secvențial două mese de sesiune și studenți și faceți clic pe butonul Adăugare.

Smochin. 17. Fereastră Adăugați tabele la diagramă

Smochin. 18. Mese Student și sesiune după adăugarea lor la diagramă

Pentru a începe setarea relației dintre tabele, trebuie să faceți clic pe câmpul Student Num_book și apoi (fără a elibera butonul mouse-ului) Glisați-l pe câmpul Sesiunea Num_book.

Ca rezultat, două ferestre se vor deschide: mese și coloane (fig.19) și relația cheie străină (fig.20), în care trebuie să lăsați totul așa cum este și confirmați alegerea dvs. pe OK.

Ferestrele meselor și coloanelor stabilește relația (FK_Session_student) și numele meselor părinte (elev) și copil.

Smochin. 19. Fereastră de mese și coloane

Smochin. 20. Fereastra proprietăților relației

După acțiunea efectuată, se va seta relația dintre tabele (Figura 21).

Smochin. 21. Relația dintre elevii și sesiunea de mese

Salvarea graficului este efectuată în același mod ca salvarea tabelului. Numele diagramei trebuie selectat la discreția sa (de exemplu, Diagrama1).

După setarea numelui diagramei, fereastra de salvare se va deschide, în care aveți nevoie pentru a vă confirma alegerea (Figura 22).

Smochin. 22. Confirmarea stocării modificărilor în tabele

9. Introducerea datelor în tabel.

Sistemul Microsoft Visual Studio vă permite să efectuați direct date în tabelul bazei de date.

În cazul nostru, la stabilirea unei conexiuni (Figura 19) primară (tabelul principal principal) este ales elevul de masă. Prin urmare, trebuie mai întâi să efectuați date în celulele acestei mese particulare. Dacă încercați să activați mai întâi datele la tabelul sesiunii, sistemul va bloca o astfel de intrare cu ieșirea mesajului corespunzător.

Pentru a invoca modul de introducere a datelor la tabelul Student, trebuie să apelați comanda de date de show table din meniul contextual (faceți clic dreapta pe butonul din dreapta) sau din meniul Date (fig.23).

Smochin. 23. Afișați echipa de date de tabel

O fereastră se va deschide în care doriți să introduceți datele de intrare (figura 24).

Smochin. 24. Introducerea datelor în tabelul Student

După efectuarea datelor la masa de student, trebuie să faceți date în tabelul de sesiune.

Când faceți date în câmpul Num_book, tabelul de sesiune trebuie introdus exact aceleași valori introduse în câmpul Student Num_book (deoarece aceste câmpuri sunt legate între ele).

De exemplu, dacă în câmpul num_book, tabelele studențești sunt introduse “101”, “102”, “103” (Consultați Fig. 24), trebuie să introduceți aceste valori în câmpul Sesiunea Num_book. Dacă încercați să introduceți o valoare diferită, sistemul va elibera aproximativ următoarea fereastră (figura 25).

Smochin. 25. Mesaj de eroare de introducere a datelor Mesajele studenților și sesiunii

Tabelul de sesiune cu datele introduse este prezentat în Figura 26.

Adnotare: După ce ați citit această prelegere, puteți: să creați solicitări utilizând un designer sQL interogări Server Management Studio, eliminați informațiile bazei de date din tabelele sistemului de baze de date, pentru a crea dinamic cereri simple bazate pe introducerea utilizatorului, formarea solicitărilor dinamice de intrare și filtrare complexe, efectuați o analiză de sintaxă și reformați datele pentru utilizarea în filtru, protejați Baza de date din atacuri precum "SQL-Injection", utilizați procedura SP_EXECUTESQL pentru trimiterea unei cereri

În prelegerea anterioară, a fost descris cum să crească performanţă Cereri. Acum știți cum să creați un set eficient de solicitări pentru a oferi utilizatorilor cel mai mult informatii utile De la aplicația dvs. utilizând interogări pre-create în proceduri sau vizualizări stocate.

Cu toate acestea, în orice aplicație, în plus față de cea mai ușoară, este imposibil să înveți toate tipurile posibile de tipuri de informații în avans pe care utilizatorii pot fi necesare și cum doresc să filtreze și să o raționalizeze. În loc să încercați să furnizați toate caracteristicile, puteți oferi utilizatorului gestionarea informațiilor raportate de aplicație. Această prelegere spune modul de a construi dinamic interogări pe baza alegerii pe care utilizatorul o face în timpul executării ciclului de lucru.

Interfața utilizator pentru cererile de construcție

Mediul SQL Server Management Studio include o interfață complexă pentru a construi cereri. Să studiem această interfață, astfel încât să aveți o idee despre cum puteți crea interogări dinamic. Cererea dvs. nu va avea nevoie de toate elemente de controlfurnizarea mediul SQL. Server Gestionare Studio. De fapt, trebuie să vă gândiți temeinic la modul de a limita cel mai bine utilizatorii de a alege.

Creați o solicitare utilizând designerul SQL Server Management Studio

Eliminarea informațiilor despre tabelele bazei de date

Pentru a oferi utilizatorului lista parametrilor, cererea este probabil să fie învățată informații despre tabelele bazei de date. Există mai multe modalități de a obține aceste informații. Cea mai importantă dintre aceste metode este utilizarea schemei informaționale_schema. Această schemă este standard în orice bază de date.

Aplicație information_schema.

Schema informațională_schema este o schemă specială care se află în fiecare bază de date. Acesta conține definiții ale unor obiecte de bază de date.

Informații_schema respectă standardul ANSI, care este conceput pentru a extrage informații din orice kernel de bază de date compatibil ANSI. SQL Server Information_Schema constă dintr-un set de reprezentări care solicită tabelele bazei de date SYS * care conțin informații despre structura bazei de date. Cererea la aceste tabele poate fi efectuată direct, în același mod ca orice tabele de bază de date. Cu toate acestea, în majoritatea cazurilor, pentru a extrage informații din tabelele SYS, este mai bine să utilizați vizualizările schemei informative informative.

Notă. Schema informațională_schema solicită uneori tabele care nu sunt necesare, care dăunează productivității. În exemplul următor al acestei prelegeri, acest lucru nu este deosebit de important deoarece aplicația a așteptat deja introducerea utilizatorului. Cu toate acestea, acest lucru ar trebui luat în considerare dacă viteza este un aspect important pentru aplicația dvs.

Aici este codul de bază T-SQL, care este utilizat pentru a obține informații despre coloanele incluse în tabel:

Rețineți că trebuie să selectați câmpul Table_schema pentru tabel. Acest lucru poate fi important să creați interogări similare în viitor. Pentru a experimenta metodele descrise în această prelegere, creați un nou proiect în Visual Studio.

Creați un nou proiect Visual Studio
  1. Selectați din meniul de pornire al comenzilor de programe, Microsoft Visual Studio 2005, Microsoft Visual Studio 2005.
  2. În meniul Visual Studio, selectați Fișier, nou, proiect (fișier, creați, proiect).
  3. În panoul Tipuri de proiect, extindeți Nodul de bază Visual (Visual Basic Solutions) și selectați șablonul de aplicație din panoul Șabloane. Dați proiectul Nume CAPITOL7 și faceți clic pe OK,
  4. Aplicația pentru acest exemplu poate fi găsită în fișierele din exemplele din dosarul \\ CAPITOL7 \\ DynQuery. Puteți tăia și introduceți codul pentru următoarele proceduri din fișierul FORM1.VB.
Obținerea unei liste de tabele și reprezentări

De regulă, va trebui să furnizați utilizatorului posibilitatea de a selecta nu numai coloane, ci și un tabel pentru o interogare dinamică, deci trebuie să afișați o listă de tabele pentru utilizator. Informatie necesara Puteți obține cu următoarea solicitare:

Selectați table_schema, table_name, table_type de la information_schema.tutbles

În anexă, această solicitare poate fi utilizată după cum urmează.

Primim o listă de tabele

Codul de mai sus pe baza vizuală inițializează obiectul mpommand cu numele COM cu șirul SQL care trebuie făcut și apoi execută obiectul SQLCommand. Acesta este cel mai simplu mod de a executa oferta T-SQL din aplicație.

Ca exercițiu, puteți plasa schemele și tabelele obținute în timpul punerii în aplicare a procedurii de încărcare a formei noastre, în interfața cu utilizatorul sub forma unui formular, astfel încât utilizatorul să poată alege o schemă și un tabel pentru a funcționa. De exemplu, în această prelegere, presupunem că utilizatorul a ales schema de vânzări și tabelul clientului.

După ce utilizatorul a selectat tabelul, puteți elimina lista de coloane pentru acest tabel utilizând aceeași metodă utilizând introducerea utilizatorului ca nume de tabel din interogare. Pentru a face acest lucru, introduceți deputatul în șirul de interogare, apoi înlocuiți acest apel adjunct la șir.Format. În codul de mai jos, substituentul din linia de interogare - (0).

Avem o listă de coloane
  1. Adăugați următoarea procedură de retrivecolumns sub procedura de preluare:

    SURSERECOLUMNURI SUB REREPEREVECOLUMNS (BYVALN TABELNAME) MyConnection ca nou sqlcient.sqlconnection (_ "Sursa de date \u003d _ sqlexpress; & _" Catalog inițial \u003d aventureWorks; Trusted_connection \u003d da; ") Dim sqlstr ca șir SQLSTR \u003d" Selectați table_schema, table_mona , Colump_Name, "+ _" ordinal_position, Data_type "+ _" de la information_schema.columns "+ _" unde (table_name \u003d "(0)") "Dim tabelcolumns ca noul Datable DA DA AS NEW SQLCIENT.SQLDATAATAPTER (_ string.Format (Sqlstr, nume de table), myconnection) da.fill (tablecolumns) pentru i ca Integer \u003d 0 to tablercolumns.rots.count - 1 cu tablecolumns.rows.item (i) console.writeline ("(0) (1) (2 ) ", _ _ITEM (1), .Item (2), .Item (3)) capăt cu următorul sub

  2. În procedura Form1_load, adăugați următoarele apeluri de procedură de retrievecolumns după procedurile de preluare: