Executando Consultas no MySQL - Node.js
Para executar consultas, utiliza-se o método query()
query(sqlString, callback)
Aqui, sqlString
Por exemplo, para obter todos os dados de uma tabela:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb",
password: "123456"
});
connection.query("SELECT * FROM users", function(err, results, fields) {
console.log(err);
console.log(results); // os dados em si
console.log(fields); // metadados dos campos
});
connection.end();
Nesse caso, o comando SELECT
results
SELECT
fields
Vale destacar que, ao executar consultas, a conexão é estabelecida implicitamente. Portanto, não é estritamente necessário chamar o método connect()
O mysql2
execute()
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb",
password: "123456"
});
connection.execute("SELECT * FROM users", function(err, results, fields) {
console.log(err);
console.log(results); // os dados em si
console.log(fields); // metadados dos campos
});
connection.end();
Parametrização de Consultas
Quando há a necessidade de inserir dados provenientes de fontes externas em uma consulta, é recomendável usar a parametrização para evitar injeções de SQL.
Na parametrização, em vez de inserir os dados diretamente no texto da consulta, utilizam-se placeholders, que são representados por pontos de interrogação. Durante a execução da consulta, esses placeholders são substituídos pelos dados reais. Veja um exemplo de inserção de dados:
const mysql = require("mysql2");
const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "usersdb2",
password: "123456"
});
const user = ["Tom", 29];
const sql = "INSERT INTO users(name, age) VALUES(?, ?)";
connection.query(sql, user, function(err, results) {
if (err) console.log(err);
else console.log("Dados adicionados");
});
connection.end();
Neste exemplo, os dados são definidos em um array user
connection.query()
INSERT INTO users(name, age) VALUES("Tom", 29)