Nodejs: Mysql ,create,insert ,update...

Les étapes à suivre

  1. 1Installer une SGBD mysql et démarer le service mysql
  2. 3Installer le module mysql.js
  3. 4Installer le module Nodemon
  4. 5Créer le fichier CreerDBandTables.js
  5. 6Lancer le projet
  6. 7mysql La commande insert
  7. 8mysql La commande select
  8. 9mysql La commande delete
  9. 10mysql La commande update

1.Installer un SGBD mysql et démarer le service mysql

Télécharger mysql SGBD ,Dans ce tp on utilise Xampp server https://www.apachefriends.org/fr/download.html
mais vous pouvez utilsé n'importe quelle SGBD mysql

2.Installer le module mysql

Un projet nodeJs utilise plusieurs bibiothèque javasript nommées modules
Afin de travailer avec mysql on doit installer le module mysql

npm install mysql2 --save

3.Installer le module Nodemon

Nodemon est un outil qui aide à développer des applications basées sur node.js en redémarrant automatiquement l'application de nodejs lorsqu'il detetecte des modifications dans le projet

npm install nodemon -g

4.Créer le fichier CreerDBandTables.js

/*Importer le module mysql qui permet de gérer les transaction dans une base de données mysql */
var mysql = require('mysql2');

//créer une connexion à la base de données
var con = mysql.createConnection({
host: "localhost", /*le serveur de la base de données*/
user: "root", /*Utilisateur de la base de données*/
password: "",/*le mot de passe de l'utilisateur de la base de données*/
port: "3306", /*le serveur de la base de données*/
});

/*Créer la base de données */
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
con.query("CREATE DATABASE if not exists DatabaseTest", function (err, result) {
if (err) throw err;
/*se connecter à la base de données crée puis créer les tables */
var con = mysql.createConnection({
host: "localhost", /*le serveur de la base de données*/
user: "root", /*Utilisateur de la base de données*/
password: "",/*le mot de passe de l'utilisateur de la base de données*/
port: "3306", /*le serveur de la base de données*/
database: "DatabaseTest" /*le nom de la base de données à Créer manullement*/
});

//se connecter en utlisant con crée
con.connect(function(err) {
/*err:contient error de connexion*/
/*afficher erreur de connexion s'il existe*/
if (err) throw err;
/*pas d'erreur donc on peut exécuter des requête sql */
/*Créer la table produit */
var sql = "CREATE TABLE test(id int primary key auto_increment,nom varchar(25))";
/*Exécuter la requete sql crée*/
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Table Test est crée");
});
});
});
});

5.Lancer le projet

nodemon CreerDBandTables.js

SQL Commandes :insert,select,update,delete...

à l'aide du module mysql on peut exécuter n'importe quelle requête sql avec nodejs

Configuration de la connexion à la base de données :config.js

Création du fichier de configuration pour se connecter à la base de données afin d'éxécuter des requêtes SQL

let config = {
host :'localhost',
user :'root',
password :'',
database :'DatabaseTest'
};
module.exports = config;

a.Mysql:insert

Insérer des lignes dans la table test(id,nom) deja crée

On a plusieurs méthode pour insérer des données dans une table à l'aide du module myql

1.Insert une seule ligne insert1ligne.js
let mysql = require('mysql2');
let config = require('./config.js');
/*créer une connexion à la base de données à l'aide de la configuration crée dans le fichier config.js */
let connection = mysql.createConnection(config);

/**1**/
/*une requête sql insert */
let sql = 'INSERT INTO test(id,nom) VALUES(1,"le test 1")';
// executer la requêts sql
connection.query(sql, function (err, result) {
if (err) {
return console.error(err.message);
}
/*result.insertId:retourne l'id de la ligne inséré*/
console.log("Bien insérer id="+result.insertId);
});


/***2 ***/
/*Id est auto_incrment dans on peut ne pas le saisir */
sql = 'INSERT INTO test(nom) VALUES("le test 2")';
connection.query(sql, function (err, result) {
if (err) {
return console.error(err.message);
}
console.log("Bien insérer id="+result.insertId);
});

/*Fermer la connexion */
connection.end();

Exécution:

node insert1ligne.js
Résultats:
Duplicate entry '1' for key 'PRIMARY' Erreur =>INSERT INTO test(id,nom) VALUES(1,"le test 1")
Bien insérer id=3

2.Inérer plusieurs lignes dans la table test insertPlusieurs.js

let mysql = require('mysql2');
let config = require('./config.js');
let connection = mysql.createConnection(config);

/**La méthode 1**/
let sql = 'INSERT INTO test(id,nom) VALUES ?';
/*tableau des valeurs à insérées */
var values = [
[5, 'le test 5'],
[6, 'Le test 6']
];

/*Exécuter la requête SQL en passant le tableau des valeur*/
connection.query(sql,[values], function (err, result) {
if (err) {
return console.error(err.message);
}
/*result.insertId:retourne l'id de la ligne inséré*/
console.log("Bien insérer id="+result.insertId);
});

/*Fermer la connexion */
connection.end();

a.Mysql:select

Afficher le contenu de la table test

-Select sans Where selectSansWhere.js

let mysql = require('mysql2');
let config = require('./config.js');
let connection = mysql.createConnection(config);

/*SQL select */
let sql = 'select id,nom from test';

// executer la requêts sql
connection.query(sql, function (err, result, fields) {
/*
**1
err:contient les erreurs si on a

**2
result:contient le result de select
result[1].id=>retourne la valeur de l'id du premier enregistrement
result[3].nom=>retourne la valeur du nom du troisième enregistrement

**3
fields:contient les informations (structure de chaque colonne dans select )
exmple:
fields[1]=>retoune les informations su le nom
{
catalog: 'def',
db: 'DatabaseTests',
table: 'test',
orgTable: 'test',
name: 'nom',
orgName: 'nom',
charsetNr: 33,
length: 765,
type: 253,
.....
}
*/
if (err) {
return console.error(err.message);
}

console.log(result);
});

/*Fermer la connexion */
connection.end();

Exécution:

node selectSansWhere.js

Résultats:

[
{ id: 1, nom: 'le test 1' },
{ id: 2, nom: 'le test 2' },
{ id: 3, nom: 'le test 2' },
{ id: 5, nom: 'le test 5' },
{ id: 6, nom: 'Le test 6' }
]

-Select avec Where selectAvecWhere.js

let mysql = require('mysql2');
let config = require('./config.js');
let connection = mysql.createConnection(config);

/*SQL select avec Where */
var sql = 'SELECT * FROM test WHERE id = ? OR nom LIKE ?';
var id=1;
var nom="test";
/*Exécuter la requête SQL en passant un tableau de valeur pour id et nom */
connection.query(sql, [id, "%"+nom+"%"], function (err, result) {
if (err) {
return console.error(err.message);
}
console.log(result);
});

/*Fermer la connexion */
connection.end();

Exécution:

node selectAvecWhere.js

Résultats:

[
{ id: 1, nom: 'le test 1' },
{ id: 2, nom: 'le test 2' },
{ id: 3, nom: 'le test 2' },
{ id: 5, nom: 'le test 5' },
{ id: 6, nom: 'Le test 6' }
]

-Mysql Delete Delete.js

let mysql = require('mysql2');
let config = require('./config.js');
let connection = mysql.createConnection(config);

/*Delete SQL Commande*/
var sql = 'Delete FROM test WHERE id = ?';
var id=1;
/*Exécuter la requête SQL en passant la valeur de id=?*/
connection.query(sql, id, function (err, result) {
if (err) {
return console.error(err.message);
}
/*result.affectedRows :retourne le nombre de ligne supprimées */
console.log(result.affectedRows);
});

/*Fermer la connexion */
connection.end();

Exécution:

node delete.js

Résultats:

1

-Mysql Update update.js

let mysql = require('mysql2');
let config = require('./config.js');
let connection = mysql.createConnection(config);

/*Upate SQL Commande*/
var sql = 'update test set nom=? WHERE id =?';
var id=2;
var nom="test modifié";
/*Exécuter la requête SQL en passant la valeur de id=?*/
connection.query(sql, [nom,id], function (err, result) {
if (err) {
return console.error(err.message);
}
/*result.affectedRows :retourne le nombre de ligne supprimées */
console.log(result.affectedRows);
});

/*Fermer la connexion */
connection.end();

Exécution:

node update.js

Résultats:

1









Cours et TPs