Cette page explique comment exécuter des requêtes SQL pour lire/écrire des données dans une base de données MySQL.
Dans ce qui suit, nous supposons qu'un serveur MySQL est accessible et que les informations d'identification sont username
/password
.
Vous pouvez vérifier que votre serveur MySQL est correctement installé et configuré en utilisant l'interface CLI mysql :
mysql --host=127.0.0.1 --port=6033 -u username -p
Ne continuez pas tant que vous n'êtes pas en mesure de vous connecter à la base de données. Sinon, le code Node.js ne fonctionnera jamais.
Ce qui suit a été testé avec ces versions :
Tout d'abord, nous avons besoin d'un client MySQL pour Node.js.
Il existe deux paquets npm nommés mysql
et mysql2
.
mysql2
est plus rapide et sécurisé, donc installons celui-ci :
npm install mysql2
Créez un fichier nommé app.js
pour votre projet.
Importez d'abord le client MySQL :
// Import MySQL client
const mysql = require('mysql2');
Maintenant, connectons nous à la base de données (c'est ici que les informations d'identification sont importantes).
Créons un objet dbConfig
avec la configuration de la connexion.
const dbConfig = {
host: "127.0.0.1",
port: 6033,
user: 'username',
database: 'esp32',
password: 'password'
}
Créons maintenant une nouvelle connexion à la base de données :
// create the connection to database
const connection = mysql.createConnection(dbConfig);
Voici le code de la première requête :
// Simple query
connection.query(
'SELECT * FROM `table`',
function(err, results, fields) {
if (err) console.log (err);
console.log(results);
}
);
Le code ci-dessus devrait retourner un objet contenant le contenu entier de table
:
[
{
id: 1,
name: 'Jim Morrison',
age: 28,
timestamp: 2023-01-12T08:06:25.000Z
},
{
id: 2,
name: 'Paul Smith',
age: 32,
timestamp: 2023-01-12T08:07:40.000Z
}
]
Pour éviter les injections SQL, je ne recommande pas d'utiliser connection.query()
.
Préférez les instructions préparées.
les requêtes paramétrées envoient la requête et les paramètres séparément.
Si vous ne comprenez pas pourquoi c'est important importants, consultez cette page sur les injections SQL.
Pour exécuter une requête paramètrée, utilisez connection.execute()
au lieu de connection.query()
.
Le deuxième argument de la fonction est un tableau contenant les paramètres :
connection.execute(
'INSERT INTO `data` (`firstname`, `age`) VALUES (?,?);',
['Jim Morrison', 28],
(err, results, fields) => {
// Check for error
if (err) console.log (err);
console.log(results);
}
);
Si vous exécutez les codes ci-dessus, vous avez probablement remarqué que l'application ne se termine jamais. Ceci est dû au fait que la connexion à la base de données est asynchrone et reste ouverte.
Pour fermer la connexion MySQL, utilisez :
connection.end();
Vous pouvez télécharger le code source Node.js ici :