Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:laborator06 [2015/11/30 12:41] Andrei Roșu-Cojocaru |
laboratoare:laborator06 [2015/11/30 15:31] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 1133: | Line 1133: | ||
| * ''trace'' - permite reținerea stivei de execuție în cadrul obiectelor ''Error'' care să includă apelul metodei din cadrul bibliotecii, cu deprecieri ale performanțelor pentru majoritatea apelurilor (implicit, ''true''); | * ''trace'' - permite reținerea stivei de execuție în cadrul obiectelor ''Error'' care să includă apelul metodei din cadrul bibliotecii, cu deprecieri ale performanțelor pentru majoritatea apelurilor (implicit, ''true''); | ||
| * ''multipleStatements'' - stabilește comportamentul în privința utilizării mai multor expresii MySQL în cadrul aceleiași interogări, ceea ce ar putea reprezenta o breșă de securitate în privința atacurilor prin injecția de SQL malițios (implicit, ''false''); | * ''multipleStatements'' - stabilește comportamentul în privința utilizării mai multor expresii MySQL în cadrul aceleiași interogări, ceea ce ar putea reprezenta o breșă de securitate în privința atacurilor prin injecția de SQL malițios (implicit, ''false''); | ||
| - | * ''flags'' - stabilește o listă cu valori care vor controla comportamentul conexiunii; | + | * ''flags'' - stabilește o listă cu valori care vor controla comportamentul conexiunii; aceștia sunt transmiși sub forma unui șir de caractere în care delimitatorul este caracterul '',''; un flag care este adăugat în plus față de cele implicite trebuie prefixat de caracterul ''+'' iar în situația în care se dorește ca un flag implicit să fie șters, acesta trebuie prefixat de caracterul ''-''; lista de flag-uri implicite este: |
| + | * ''CONNECT_WITH_DB'' - permite specificarea denumirii bazei de date în momentul în care este definită o conexiune; | ||
| + | * ''FOUND_ROWS'' - transmite atributul ''found_rows'' al argumentului ''result'' din cadrul metodei de tip callback transmisă prin metoda ''query()'', în loc de ''affected_rows''; | ||
| + | * ''IGNORE_SPACE'' - interpretorul SQL va ignora spațiile care preced caracterul ''('' în cadrul interogărilor; | ||
| + | * ''LOCAL_FILES'' - permite încărcarea înregistrărilor într-o bază de date folosind ''LOAD DATA LOCAL''; | ||
| + | * ''LONG_FLAG''; | ||
| + | * ''LONG_PASSWORD'' - folosește o versiune îmbunătățită a mecanismului de autentificare; | ||
| + | * ''MULTI_RESULTS'' - semnalează posibilitatea de gestiune concurentă a mai multe seturi de rezultate; | ||
| + | * ''PROTOCOL_41'' - folosește versiunea 4.1 a protocolului de conectare la baza de date; | ||
| + | * ''PS_MULTI_RESULTS'' - semnalează posibilitatea de gestiune concurentă a mai multe seturi de rezultate; | ||
| + | * ''SECURE_CONNECTION'' - indică faptul că este suportată mecanismul de autentificare nativ din versiunea 4.1 a protocolului de conectare la baza de date; | ||
| + | * ''TRANSACTIONS'' - solicită utilizarea flag-urilor care indică starea tranzacției; | ||
| + | * ''MULTI_STATEMENTS'' - transmis în mod automat în situația în care parametrul ''multipleStatements'' are valoarea ''true''; | ||
| * ''ssl'' - transmite un obiect care conține parametri SSL sau un șir de caracyere care conține denumirea unui profil SSL. | * ''ssl'' - transmite un obiect care conține parametri SSL sau un șir de caracyere care conține denumirea unui profil SSL. | ||
| Line 1168: | Line 1180: | ||
| connection.destroy(); | connection.destroy(); | ||
| </code> | </code> | ||
| + | |||
| + | În situația în care se dorește folosirea unui grup de conexiuni, se poate folosi metoda ''createPool()'' a obiectului ''mysql'' astfel încât numărul de conexiuni este specificat prin intermediul proprietății ''connectionLimit''. Obținerea unei conexiuni se face ulterior prin apelul metodei ''getConnection()'', iar în momentul în care aceasta nu mai este necesară se poate apela metoda ''release()''. Un grup de conexiuni este terminat prin apelul metodei ''end()''. | ||
| **Realizarea unei interogări** este realizată de regulă prin intermediul metodei ''query()'' apelată pe obiectul de tip ''Connection'', care suportă următoarele forme: | **Realizarea unei interogări** este realizată de regulă prin intermediul metodei ''query()'' apelată pe obiectul de tip ''Connection'', care suportă următoarele forme: | ||
| Line 1173: | Line 1187: | ||
| <code javascript> | <code javascript> | ||
| - | connection.statement('SELECT * FROM book', function(error, result, fields) { | + | connection.query('SELECT * FROM book', function(error, result, fields) { |
| if (error) { | if (error) { | ||
| console.log('An error has occurred: %s', error); | console.log('An error has occurred: %s', error); | ||
| Line 1211: | Line 1225: | ||
| <code javascript> | <code javascript> | ||
| - | connection.statement('SELECT * FROM book b WHERE b.id = ?', [bookId], function(error, result, fields) { | + | connection.query('SELECT * FROM book b WHERE b.id = ?', [bookId], function(error, result, fields) { |
| // ... | // ... | ||
| }); | }); | ||
| Line 1224: | Line 1238: | ||
| <code javascript> | <code javascript> | ||
| - | connection.statement({ | + | connection.query({ |
| sql: 'SELECT * FROM books WHERE b.id = ?', | sql: 'SELECT * FROM books WHERE b.id = ?', | ||
| values: [bookId], | values: [bookId], | ||
| Line 1238: | Line 1252: | ||
| <code javascript> | <code javascript> | ||
| - | connection.statement({ | + | connection.query({ |
| sql: 'SELECT * FROM books WHERE b.id = ?', | sql: 'SELECT * FROM books WHERE b.id = ?', | ||
| nestTables: true, | nestTables: true, | ||
| Line 1257: | Line 1271: | ||
| </code> | </code> | ||
| - | Un parametru poate fi precizat și prin denumirea sa: | + | Pentru operațiile de **adăugare**, **modificare**, **ștergere**, se pot determina informații legate de identificatorul valorii care este adăugată, respectiv de numărul de înregistrări care au fost modificate / șterse, ca proprietăți ale obiectului ''result'' transmis ca parametru al funcției de tip callback în momentul în care este invocată metoda ''query()'': |
| + | * ''insertId'' - stochează identificatorul înregistrării care a fost adăugată în baza de date în urma unei interogări de tip ''INSERT'' transmisă ca parametru al metodei ''query()'': <code javascript> | ||
| + | var book = { | ||
| + | "title": title, | ||
| + | "subtitle": subtitle, | ||
| + | "description": description, | ||
| + | "edition": edition, | ||
| + | "printing_year": printing_year, | ||
| + | "collection_id": collection_id | ||
| + | }; | ||
| + | var query = connection.query('INSERT INTO book SET ?', book, function(error, result) { | ||
| + | if (error) { | ||
| + | console.log('An error has occurred: %s', error); | ||
| + | return; | ||
| + | } | ||
| + | console.log('The record has been successfully inserted with id %d', result.insertId); | ||
| + | }); | ||
| + | console.log(query.sql); | ||
| + | </code> | ||
| + | * ''changedRows'' - determină numărul de înregistrări care au fost modificate în urma unei interogări de tip ''UPDATE'' transmisă ca parametru al metodei ''query()'': <code javascript> | ||
| + | var query = connection.query('UPDATE book SET edition = edition + 1 WHERE printing_year > ?', [printingYear], function(error, result) { | ||
| + | if (error) { | ||
| + | console.log('An error has occurred: %s', error); | ||
| + | return; | ||
| + | } | ||
| + | console.log('%s records have been successfully updated', result.changedRows); | ||
| + | }); | ||
| + | </code> | ||
| + | * ''affectedRows'' - determină numărul de înregistrări care au fost șterse în urma unei interogări de tip ''DELETE'' transmisă ca parametru al metodei ''query()'': <code javascript> | ||
| + | var query = connection.query('DELETE FROM book WHERE collection_id IN ?', [collectionId], function(error, result) { | ||
| + | if (error) { | ||
| + | console.log('An error has occurred: %s', error); | ||
| + | return; | ||
| + | } | ||
| + | console.log('%s records have been successfully deleted', result.affectedRows); | ||
| + | }); | ||
| + | </code> | ||
| ===== Activitate de Laborator ===== | ===== Activitate de Laborator ===== | ||
