-
Adaugare date in tabel
-
Adaugare mai multe randuri
Creare tabel
Pentru a crea un tabel in MySQL, se utilizeaza instructiunea "CREATE TABLE".
Cand creezi conexiunea adauga proprietatea "
database" in metoda
mysql.createConnection() cu numele bazei de date.
- In acest exemplu vom crea un tabel "friends" in baza de date mysql "nodedb:
const mysql = require('mysql');
const con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'nodedb',
charset: 'utf8' //encoding charset
});
let sql ='CREATE TABLE IF NOT EXISTS friends (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, address VARCHAR(255))';
con.query(sql, (err, res)=>{
if(err) throw err;
console.log('Table created.', res);
con.end(err=>{
if(err) throw err;
console.log('Connection is terminated.');
});
});
Salveaza codul de mai sus intr-un fisier numit "mysql_create_table.js" si ruleaza fisierul:
node test/mysql_create_table.js
Adaugare date in tabel
Pentru a introduce date in tabelul MySQL, se foloseste interogare SQL "
INSERT INTO".
Pentru a evita "SQL injection", ar trebui sa filtrati datele furnizate de utilizator inainte de a le utiliza in interiorul unei interogari SQL. Pentru aceasta se foloseste metoda mysql.escape().
Alternativ, puteti utiliza caracterele ? ca substituenti pentru valorile care le doriti filtrate, si adaugati valorile intr-un array ca al doilea argument al metodei query() (in aceeasi ordine ca si substituentii '?' din interogarea sql).
- Exemplu cu escape(), introduce un rand cu valori pentru campurile name si address.
const mysql = require('mysql');
const con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'nodedb',
charset: 'utf8' //encoding charset
});
var name ='Olpram';
var adr ='Heaven, Peace 0';
let sql ='INSERT INTO friends (name, address) VALUES ('+ mysql.escape(name) +', '+ mysql.escape(adr) +')';
con.query(sql, (err, res)=>{
if(err) throw err;
console.log(res);
con.end(err=>{
if(err) throw err;
console.log('Connection is terminated');
});
});
- Sau, aceeasi instructiune INSERT, cu substituenti '?':
const mysql = require('mysql');
const con = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'nodedb',
charset: 'utf8' //encoding charset
});
var name ='Olpram';
var adr ='Heaven, Peace 0';
let sql ='INSERT INTO friends (name, address) VALUES (?, ?)';
con.query(sql, [name, adr], (err, res)=>{
if(err) throw err;
console.log(res);
con.end(err=>{
if(err) throw err;
console.log('Connection is terminated');
});
});
Salveaza codul de mai sus intr-un fisier numit "mysql_insert.js" si ruleaza fisierul:
node test/mysql_insert.js
Va da acest rezultat, un obiect cu informatii despre interogarea efectatuata:
{
fieldCount: 0,
affectedRows: 1,
insertId: 1,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0
}
Connection is terminated.
- Pentru tabele cu camp "id" AUTO_INCREMENT, poti obtine id-ul randului adaugat apeland proprietatea "
insertId" a obiectului rezultat.
console.log('1 record inserted, ID: '+ res.insertId);
Adaugare mai multe randuri
Pentru a introduce mai multe randuri cu aceeasi instructiune SQL, creaza un array cu valorile ce trebuie adaugate si pune caracterul '?' in sql, care va fi inlocuit cu acel array:
let sql ='INSERT INTO friends (name, address) VALUES ?';
let values =[
['a', 'b'],
['a2', 'b2'],
//...
];
Adauga array-ul cu valori
intr-un alt array ca al doilea argument in functia
con.query():
con.query(sql, [values], (err, res)=>{});
- Cand sunt introduse mai multe randuri, valoarea
res.insertId contine id-ul AUTO_INCREMENT al primului rand introdus.
In acest caz, pentru a obtine id-ul AUTO_INCREMENT al ultimului rand introdus, foloseste:
var last_id = res.insertId + res.affectedRows -1;
- Proprietatea
res.affectedRows contine numarul de randuri introduse.
Exemplu:
const mysql = require('mysql');
const con = mysql.createConnection({
host: '127.0.0.1',
user: 'root',
password: 'pass',
database: 'nodedb',
charset: 'utf8' //encoding charset
});
let sql ='INSERT INTO friends (name, address) VALUES ?';
let values = [
['Xela', 'Good 71'],
['Rotciv', 'Helpful 4'],
['Noi', 'Loving st 652'],
['Anilehgna', 'Blessing 21']
];
con.query(sql, [values], (err, res)=>{
if(err) throw err;
var last_id = res.insertId + res.affectedRows -1;
console.log('Number of records inserted: '+ res.affectedRows +'\n Id of first inserted row: '+ res.insertId +'\n Id of last inserted row: '+ last_id);
con.end(err=>{
if(err) throw err;
console.log('Connection is terminated.');
});
});
Salveaza codul de mai sus intr-un fisier numit "mysql_insert2.js" si ruleaza fisierul:
node test/mysql_insert2.js
Iti va da un rezultat ca acesta:
Number of records inserted: 4
Id of first inserted row: 2
Id of last inserted row: 5
Connection is terminated.
Daca e adaugat sirul "
localhost" in proprietatea "host", si rezulta aceasta eroare:
Error: getaddrinfo ENONET localhost:3306
- Incearca sa folosesti: "
127.0.0.1"