În acest articol, veți afla ce este LINQ și cum să interogați liste folosindu-l.

Ce este LINQ? Language Integrated Query (LINQ) este un limbaj de interogare integrat, sau mai degrabă un proiect Microsoft controversat pentru a adăuga o sintaxă a limbajului de interogare similară cu SQL. Definiție specifică, cu acest instrument puteți crea relativ ușor interogări împotriva tabelelor și listelor de date, nu neapărat o bază de date.

Exemplele Microsoft scapă un mic, dar important detaliu. Pentru a lucra cu un set de date, trebuie să folosim structura DataContext, a cărei definiție poate fi obținută folosind SPMetal.exe pentru o listă sau bibliotecă prezentă pe serverul Sharepoint. Cu alte cuvinte, trebuie mai întâi să definim acest tip de date și apoi să creăm o interogare utilitate specială pentru a lucra în MVS: Imtech Get SPMetal Definition Extension.

Pentru a funcționa, avem nevoie de un fel de listă. Să profităm lista simpla- „listă personalizată”; titlu - „Apel simplu”; câmpuri implicite: Număr, Titlu.

Și așa, să creăm unul simplu (vezi pagina corespunzătoare), cu ajutorul căruia vom observa rezultatul manipulărilor noastre. Când creăm un proiect, vom selecta un model de încredere izolat, dacă este nevoie să lucrați cu liste sau date ale altor noduri, atunci trebuie să creați un proiect pentru fermă.

Apoi, să creăm o clasă de fișiere „SimpleInversion.cs” folosind SPMetal.exe sau un plugin pentru studio. Să adăugăm un link către biblioteca Microsoft.Sharepoint.Linq. Mai mult informatii detaliate poate fi obținut de pe site-ul web MSDN.

Să creăm funcția Render și my_mess. ÎN ultima functie Vom genera date pentru afișare.

// supraîncărcați funcția
protected override void Render (scriitor HtmlTextWriter)
{
bază .Render(writer);
my_mess(scriitor);
}

// Funcția noastră pentru lucrul cu o listă
public void my_mess (scriitor HtmlTextWriter)
{
// Creați un context
DataContext data = new DataContext("http://localhost");
// Conectați-l la lista corespunzătoare de pe site în rădăcină
EntityList<Элемент>Simple_Message = data.GetList<Элемент>(„Apel simplu”);
// Executați cererea - selectați toate liniile din lista „Solicitare simplă”.
var query = din mizerie în Simple_Message
selectați mizerie;
// afișează toate datele din rezultatul interogării
foreach (var elem în interogare)
{
scriitor.WriteLine( „Element din listă:”+ elem.Name.ToString());
scriitor.WriteBreak();
}

}

Compilăm proiectul și îl adăugăm pe pagină. Ca rezultat, toate liniile din listă vor fi afișate.

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

Adnotare: După ce ați citit această prelegere, veți putea: să creați interogări folosind SQL Server Management Studio Query Builder, să preluați informațiile bazei de date din tabelele sistemului bazei de date, să creați dinamic interogări simple bazat pe intrarea utilizatorului, formatați intrarea utilizatorului și filtrați interogările dinamice complexe, analizați și reformatați datele pentru utilizare într-un filtru, protejați baza de date de atacurile de injecție SQL, utilizați sp_executeSql pentru a transmite interogarea

Conferința anterioară a vorbit despre cum să crești performanţă cereri. Acum știți cum să creați un set eficient de interogări pentru a oferi utilizatorilor cel mai mult informatii utile din aplicația dvs. folosind interogări predefinite în proceduri sau vizualizări stocate.

Cu toate acestea, în toate aplicațiile, cu excepția celor mai simple, este imposibil să știți totul în avans. opțiuni posibile tipurile de informații de care ar putea avea nevoie utilizatorii și cum vor dori să le filtreze și să le organizeze. În loc să încercați să oferiți toate astfel de capabilități, puteți oferi utilizatorului controlul asupra informațiilor raportate de aplicație. Această prelegere discută cum să construiți dinamic interogări pe baza alegerilor pe care utilizatorul le face în timpul rulării.

Interfață cu utilizatorul pentru construirea de interogări

SQL Server Management Studio include o interfață sofisticată pentru crearea de interogări. Să explorăm această interfață pentru a vă oferi o idee despre modul în care interogările pot fi create dinamic. Aplicația dvs. nu va avea nevoie de toate controale care sunt furnizate de SQL Server Management Studio. În esență, trebuie să vă gândiți bine cum în cel mai bun mod posibil limita alegerile utilizatorilor.

Creați o interogare folosind SQL Server Management Studio Query Builder

Preluarea informațiilor despre tabelele bazei de date

Pentru a oferi utilizatorului o listă de opțiuni, este posibil ca aplicația să fie nevoită să preia 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 INFORMATION_SCHEMA. Această schemă este standard în orice bază de date.

Folosind INFORMATION_SCHEMA

Schema INFORMATION_SCHEMA este o schemă specială care există în fiecare bază de date. Conține definițiile unor obiecte de bază de date.

INFORMATION_SCHEMA urmează standardul ANSI, care este conceput pentru a prelua informații din orice motor de bază de date compatibil ANSI. În SQL Server, INFORMATION_SCHEMA constă dintr-un set de vederi care interogează tabelele de bază de date sys* care conțin informații despre structura bazei de date. Aceste tabele pot fi interogate direct, la fel ca orice tabel de bază de date. Cu toate acestea, în majoritatea cazurilor, este mai bine să utilizați vizualizările de schemă INFORMATION_SCHEMA pentru a prelua informații din tabelele *sys.

Nota. Schema INFORMATION_SCHEMA interogează uneori tabele de care nu are nevoie, ceea ce dăunează performanței. În următorul exemplu din această lecție, acest lucru nu este deosebit de important deoarece aplicația aștepta deja intrarea utilizatorului. Cu toate acestea, acest lucru ar trebui luat în considerare dacă viteza este un aspect important pentru aplicația dvs.

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

Rețineți că pentru a obține schema pentru un tabel, trebuie să selectați câmpul TABLE_SCHEMA. Acest lucru poate avea implicații pentru crearea de interogări similare în viitor. Pentru a experimenta tehnicile descrise în această prelegere, creați proiect nouîn Visual Studio.

Creați unul nou Proiect vizual Studio
  1. Din meniul Start, selectați Toate programele, Microsoft Visual Studio 2005, Microsoft Visual Studio 2005.
  2. Din meniul Visual Studio, selectați Fișier, Nou, Proiect.
  3. În panoul Tipuri de proiecte, extindeți Soluții Visual Basic și selectați șablonul Aplicație din panoul Șabloane. Dați proiectului numele Chapter7 și faceți clic pe OK.
  4. Aplicația pentru acest exemplu poate fi găsită în fișierele exemplu din folderul \Chapter7\DynQuery. Puteți tăia și lipi codul pentru următoarele proceduri din fișierul Form1.vb.
Obținerea unei liste de tabele și vizualizări

De obicei, va trebui să permiteți utilizatorului să selecteze nu numai coloanele, ci și tabelul pentru interogarea dinamică, așa că va trebui să afișați utilizatorului o listă de tabele. Informațiile necesare pot fi obținute folosind următoarea solicitare:

SELECTAȚI TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES

Într-o aplicație, această interogare poate fi utilizată după cum urmează.

Obținerea unei liste de tabele

Codul Visual Basic de mai sus inițializează un obiect SqlCommand numit com cu șirul SQL de executat și apoi execută obiectul SqlCommand. Acesta este cel mai simplu mod de a executa o instrucțiune T-SQL din interiorul unei aplicații.

Ca exercițiu, puteți plasa diagramele și tabelele produse prin procedura de încărcare a formularului nostru în interfața de utilizator a aplicației ca formular, astfel încât utilizatorul să poată selecta diagrama și tabelul cu care să lucreze. Pentru exemplul din această prelegere, vom presupune că utilizatorul a selectat schema Vânzări și tabelul Client.

Odată ce utilizatorul a selectat un tabel, lista de coloane pentru acel tabel poate fi preluată folosind aceeași metodă, folosind introducerea utilizatorului ca nume de tabel în interogare. Pentru a face acest lucru, introduceți un substituent în șirul de interogare, apoi înlocuiți acel substituent cu un apel la String.Format . În codul de mai jos, substituentul din șirul de interogare este (0).

Obținerea unei liste de coloane
  1. Adăugați următoarea procedură RetrieveColumns la codul de sub procedura RetrieveTables:

    Sub RetrieveColumns(ByVal TableName As String) MyConnection As New SqlClient.SqlConnection(_ "Data Source=.\SQLExpress;" & _ "Initial Catalog=AdventureWorks;Trusted_Connection=Yes;") Dim sqlStr As String, SELECT TABLE_NAME = "SELECT TABLE_NAME = " , COLUMN_NAME, " + _ "ORDINAL_POSITION, DATA_TYPE " + _ "FROM INFORMATION_SCHEMA.COLUMNS " + _ "WHERE (TABLE_NAME = "(0))")" Dim tableColumns As New DataTable Dim da As New SqlClient.SqlDataFormat(_ String.Format (sqlStr, TableName), MyConnection) da.Fill(tableColumns) Pentru i Ca Integer = 0 La tableColumns.Rows.Count - 1 Cu tableColumns.Rows.Item(i) Console.WriteLine("(0) (1) (2 )", _ .Item(1), .Item(2), .Item(3)) Se termină cu sfârșitul următor

  2. În procedura Form1_Load, adăugați următorul apel la procedura RetrieveColumns după procedura RetrieveTables:

Exemplu de creare a unei baze de date locale Date Microsoft SQL Server înMS Visual Studio

Acest subiect prezintă o soluție la problema creării unei baze de date de tip SQL Server folosind MS Visual Studio. Sunt luate în considerare următoarele întrebări:

  • lucrul cu fereastra Server Explorer din MS Visual Studio;
  • crearea unei baze de date locale de tip SQL Server Database;
  • crearea de tabele în baza de date;
  • editarea structurilor tabelelor;
  • conectarea tabelelor bazei de date între ele;
  • introducerea datelor în tabele folosind MS Visual Studio.

Stare problematica

Folosind instrumentele MS Visual Studio, creați o bază de date de tip MS SQL Server numită Education.

Baza de date conține două tabele Student și Session.

Tabelele sunt legate între ele printr-un anumit câmp.

Structura primului tabel „Student”.

Structura celui de-al doilea tabel „Sesiunea”.

Execuţie1. Descărcați MS Visual Studio.2. Activați

fereastră Server Explorer. Pentru a lucra cu baze de date, Microsoft oferă un server de baze de date ușor, Microsoft SQL Server. Sunt

versiuni diferite

Microsoft SQL Server, de exemplu: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 și alte versiuni.

Aceste versiuni pot fi descărcate de pe site-ul web Microsoft www.msdn.com.

Acest server este excelent pentru a lucra cu baze de date. Este gratuit și are o interfață grafică pentru crearea și administrarea bazelor de date folosind instrumentul de gestionare SQL Server.

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

Vizualizare -> Server Explorer

Orez. 1. Apelați Server Explorer

Odată apelată, fereastra Server Explorer va avea un aspect aproximativ, așa cum se arată în Figura 2.

Orez. 2. Fereastra Server Explorer 3. Crearea bazei 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 Conexiuni de date și apoi să selectați „

Creați o nouă bază de date SQL Server...

” (Fig. 3). Orez. 3. Apelarea comenzii de creare a bazei de date SQL Server Ca urmare, fereastra „

Creați o nouă bază de date SQL Server „(Fig. 4).În fereastra (în câmpul „Nume server”), indicați numele

server local

instalat pe computerul dvs. În cazul nostru, acest nume este „SQLEXPRESS”.

Câmpul „Nume nou bază de date:” indică numele bazei de date care este creată. În cazul nostru, acest nume este Educație. Opțiunea Utilizare autentificare Windows trebuie lăsată neschimbată și faceți clic pe OK. Orez. 4. Creația

noua baza

Date SQL Server 2008 Express folosind MS Visual Studio 2010

Orez. 5. Fereastra Server Explorer după adăugarea bazei de date Education

4. Obiecte baze de date educaționale.

Dacă extindeți baza de date Education (semnul „+”), puteți vedea o listă cu următoarele obiecte principale:

  • Diagrame baze de date – diagrame baze de date. Diagramele arată relațiile dintre tabelele bazei de date, relațiile dintre câmpurile diferitelor tabele etc.;
  • Tabele – tabele în care sunt plasate datele bazei de date;
  • Vederi – reprezentări. Diferența dintre vederi și tabele este că tabelele bazei de date conțin date, în timp ce vizualizările de date nu, iar conținutul este selectat din alte tabele sau vederi;
  • Proceduri stocate – proceduri stocate. Sunt un grup de instrucțiuni SQL asociate care oferă flexibilitate suplimentară atunci când lucrați cu o bază de date.

5. Crearea tabelului Student.

Pe în acest moment Baza de date Education este complet goală și nu conține niciun obiect (tabele, proceduri stocate, vizualizări etc.).

Pentru a crea un tabel, trebuie să apelați meniul contextual (faceți clic clic dreapta mouse) și selectați comanda „Add New Table” (Figura 6).

Orez. 6. Adăugați o nouă comandă de tabel

Există o altă opțiune pentru adăugarea unui tabel de bază de date folosind comenzile din meniul Date:

Date -> Adăugați nou -> Tabel

Orez. 7. Opțiune alternativă adăugarea unui nou tabel

Ca rezultat, se va deschide fereastra de adăugare a tabelului, care conține trei coloane (Figura 8). În prima coloană „Numele coloanei” trebuie să introduceți numele câmpului corespunzător din tabelul bazei de date. În a doua coloană „Tipul de date” trebuie să introduceți tipul de date al acestui câmp. A treia coloană „Permite valori nule” indică opțiunea posibilității de a lipsi date în câmp.

Orez. 8. O nouă fereastră de creare a unui tabel

Folosind editorul de tabel, trebuie să creați tabelul Student așa cum se arată în Figura 9. Numele tabelului trebuie specificat când îl închideți.

În editorul de tabel, puteți seta proprietățile câmpului în fereastra Proprietăți coloane.

Pentru a seta lungimea șirului (nvchar) în caractere, există o proprietate Length în fereastra Column Properties.

Valoarea implicită pentru această proprietate este 10. Orez. 9. Masa studentului Următorul pas este să setați câmpul cheie. Acest lucru se face apelând comanda „Set Primary Key” de la

meniul contextual

Câmpuri Num_book.

Orez. 11. Masa elevilor după formarea finală

Acum puteți închide masa. În fereastra pentru salvarea tabelului, trebuie să îi setați numele - Student (Fig. 12).

Orez. 12. Introducerea numelui tabelului Student

6. Crearea tabelului Session.

Urmând exemplul creării tabelului Student, este creat tabelul Session.

Figura 13 prezintă tabelul de sesiuni după formarea finală. Cheia primară este setată în câmpul Num_book.

Numele tabelului este dat de Sesiune.

Orez. 13. Tabelul sesiunii

După parcurgerea pașilor, în fereastra Server Explorer vor fi afișate două tabele Student și Session.

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

7. Editarea structurii tabelului.

Există momente când trebuie să modificați structura unui tabel de bază de date. Pentru a face modificări la tabelele bazei de date în MS Visual Studio, mai întâi trebuie să debifați opțiunea „Preveniți salvarea modificărilor” care necesită re-crearea mesei

” așa cum se arată în Figura 14. În caz contrar, MS Visual Studio va bloca modificările aduse tabelului creat anterior. Fereastra Opțiuni prezentată în Figura 14 este apelată din meniul Instrumente în următoarea secvență:

Tools -> Options -> Database Tools -> Table and Database Designers Orez. 14. Opțiunea „

Preveniți salvarea modificărilor care necesită recrearea tabelului

Odată configurat, puteți modifica structura tabelului. Pentru a face acest lucru, utilizați comanda „Open Table Definition” (Figura 15) din meniul contextual, care este apelat pentru tabelul selectat (clic dreapta).

Orez. 15. Apelarea comenzii „Open Table Definition”.

Această comandă se află și în meniul Date:

Date -> Definiție tabel deschis

Tabelul trebuie mai întâi selectat.

8. Stabilirea legăturilor între tabele.

În conformitate cu condițiile problemei, tabelele sunt legate între ele prin câmpul Num_book.

  • Pentru a crea o relație între tabele, trebuie mai întâi (Figura 16):
  • selectați obiectul Diagrama bazei de date;

selectați comanda Add New Diagram din meniul contextual (sau din meniul Date).

Orez. 16. Apelarea comenzii pentru a adăuga o nouă diagramă

Ca rezultat, se va deschide o fereastră pentru adăugarea unei noi diagrame Add Table (Figura 17). În această fereastră, trebuie să selectați două tabele Sesiune și Student în secvență și faceți clic pe butonul Adăugare.

Orez. 17. Fereastra pentru adăugarea de tabele la o diagramă

Orez. 18. Tabelele pentru elev și sesiune după adăugarea lor la diagramă

Ca rezultat, două ferestre se vor deschide secvenţial: Tables and Columns (Fig. 19) şi Foreign Key Relationship (Fig. 20), în care trebuie să lăsaţi totul ca atare şi să confirmaţi alegerea cu OK.

În fereastra Tabele și coloane sunt specificate numele relației (FK_Session_Student) și numele tabelelor părinte (Student) și copil.

Orez. 19. Fereastra Tabele și Coloane

Orez. 20. Fereastra pentru setarea proprietatilor relatiei

După acțiunile finalizate, se va stabili relația dintre tabele (Figura 21).

Orez. 21. Relația dintre tabelele Student și Session

Salvarea unei diagrame se face în același mod ca și salvarea unui tabel. Numele diagramei trebuie ales la discreția dvs. (de exemplu, Diagrama 1).

După specificarea numelui diagramei, se va deschide fereastra Salvare, în care trebuie să confirmați alegerea (Figura 22).

Orez. 22. Confirmarea salvării modificărilor în tabele

9. Introducerea datelor în tabele.

Microsoft Visual Studio vă permite să introduceți direct date în tabelele bazei de date.

În cazul nostru, când se stabilește o conexiune (Fig. 19), tabelul Student este selectat ca Tabel cheie primară.

Prin urmare, mai întâi trebuie să introduceți date în celulele acestui tabel special. Dacă încercați să introduceți mai întâi date în tabelul de sesiune, sistemul va bloca o astfel de intrare și va afișa un mesaj corespunzător.

Pentru a apela modul de introducere a datelor în tabelul Student, trebuie să apelați comanda Show Table Data din meniul contextual (clic dreapta) sau din meniul Date (Fig. 23).

Orez. 23. Comanda Afișare date tabel

Se va deschide o fereastră în care trebuie să introduceți datele de intrare (Fig. 24).

Orez. 24. Introducerea datelor în tabelul Student

După introducerea datelor în tabelul Student, trebuie să introduceți datele în tabelul Session.

Când introduceți date în câmpul Num_book din tabelul Session, trebuie să introduceți exact aceleași valori care au fost introduse în câmpul Num_book din tabelul Student (deoarece aceste câmpuri sunt legate între ele). “101”, “102”, “103” De exemplu, dacă valorile sunt introduse în câmpul Num_book din tabelul Student

(vezi Fig. 24), atunci aceste valori ar trebui introduse în câmpul Num_book din tabelul Session.

Dacă încercați să introduceți o valoare diferită, sistemul va afișa aproximativ următoarea fereastră (Fig. 25).

În fereastra Server Explorer, unde tabelele bazei de date de pe Microsoft SQL Server sunt prezentate sub forma unui arbore (vezi Fig. 4.1.), puteți deschide o fereastră pentru fiecare tabel făcând clic pe butonul Show Table Data. În această fereastră puteți edita datele tabelului. Această fereastră de editare arată aproximativ așa cum se arată în Fig. 4.2. Aproximativ, deoarece volumul complet nu a fost inclus în figură din cauza numărului mare de coloane.

      1. Implementarea mapării bazei de date

Maparea bazei de date (componenta DataSet) este necesară pentru a elimina apelurile inutile către baza de date și server. Aceasta este o caracteristică foarte importantă, deoarece dacă mulți utilizatori lucrează cu baza de date, încărcarea pe server poate fi destul de mare - numărul de solicitări este de multe ori mai mare, ceea ce va duce la o încetinire a execuției interogărilor.

Prin urmare, datorită DataSet-ului, computerul clientului afișează baza de date cu care lucrează. La terminarea lucrărilor, bazele de date client și server sunt sincronizate (sau mai bine zis, modificările făcute în baza de date client sunt făcute în baza de date server)

Afișarea bazei de date pe MS Visual Studio 2005 arată astfel:

Toate datele numerice sunt de tip Int32, datele șir sunt șir. Dimensiunile șirurilor de date corespund celor date în modelul fizic al bazei de date.

Captura de ecran arată că fiecare tabel conține și TableAdapters. Acestea sunt un fel de punți pentru conectarea setului de date și a sursei de date. Există metode precum Fill și GetData()

Această metodă este concepută pentru a popula tabelul cu datele necesare din sursă (fișierul bazei de date)

    Metoda GetData().

Proiectat pentru a prelua date dintr-un tabel de cartografiere.

    1. Implementare software

Caracteristica principală a implementării software-ului este faptul că toate clasele responsabile cu editarea tabelelor bazei de date sunt moștenite de la unul clasa de bază, ceea ce îl face mai ușor de implementat. Metodele acestei clase de bază au fost descrise mai sus. Metodele virtuale ale clasei de bază trebuie să fie suprascrise în clasa descendentă. Toate aceste metode vă permit să schimbați parametri precum numele antetului formularului, completarea și salvarea tabelului de bază de date dorit (o clasă descendentă funcționează doar cu un tabel, în sensul editării datelor; totuși, la afișarea datelor utilizatorului, este posibil să se utilizeze mai multe tabele de baze de date pentru a afișa datele într-o formă pe înțelesul utilizatorului).

      1. Interfața programului

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

Fiecare dintre tabelele pentru editarea bazei de date este apelat de elementul corespunzător de meniu „Tabele”.

De asemenea, se creează un raport privind volumul de muncă al profesorilor făcând clic pe elementul corespunzător de meniu „Rapoarte”.

Ca o caracteristică suplimentară a software-ului, există un element de meniu „Consola”, care vă permite să executați interogări SQL în baza de date introdusă de utilizator și să afișați rezultatul într-un tabel (componenta DataTable). Pentru a face acest lucru, desigur, trebuie să cunoașteți numele tabelelor și câmpurilor și a fost creat în principal pentru a facilita implementarea software-ului, dar și alți utilizatori „dedicați” pot profita de acest lucru.