Node.js mit MySQL verbinden

In diesem Kapitel wird erläutert, wie Sie mit Node.js eine Verbindung zu MySQL herstellen und Datenbankoperationen ausführen.

Wenn Sie noch keine Grundkenntnisse in MySQL haben, können Sie unser Tutorial lesen:MySQL-Tutorial。

Die SQL-Datei für die in diesem Tutorial verwendete Tabelle Websites:websites.sql.

Treiber installieren

Dieses Tutorial verwendet denvon Taobao angepassten cnpm-Befehlzur Installation:

$ cnpm install mysql

Verbindung zur Datenbank herstellen

Ändern Sie in den folgenden Beispielen den Datenbank-Benutzernamen, das Passwort und den Datenbanknamen entsprechend Ihrer tatsächlichen Konfiguration:

Code der Datei test.js:

var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', database : 'test' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('Die Lösung ist: ', results[0].solution); });

Führen Sie den folgenden Befehl aus; das Ausgabeergebnis ist:

$ node test.js
Die Lösung ist: 2

Beschreibung der Datenbankverbindungsparameter:

ParameterBeschreibung
hostHost-Adresse (Standard: localhost)
  userBenutzername
  PasswortPassword
  portPortnummer (Standard: 3306)
  DatenbankDatenbankname
  charsetVerbindungszeichensatz (Standard: 'UTF8_GENERAL_CI'; beachten Sie, dass die Buchstaben des Zeichensatzes in Großbuchstaben angegeben werden müssen)
  localAddressDiese IP wird für TCP-Verbindungen verwendet (optional)
  socketPathMit einem Unix-Domain-Socket-Pfad verbinden; wird ignoriert, wenn host und port verwendet werden
  timezoneZeitzone (Standard: 'local')
  connectTimeoutVerbindungs-Timeout (Standard: unbegrenzt; Einheit: Millisekunden)
  stringifyObjectsOb Objekte serialisiert werden sollen
  typeCastOb Spaltenwerte in lokale JavaScript-Typwerte konvertiert werden sollen (Standard: true)
  queryFormatBenutzerdefinierte Formatierungsmethode für Abfrageanweisungen
  supportBigNumbersWenn die Datenbank Spalten vom Typ bigint oder decimal unterstützt, muss diese Option auf true gesetzt werden (Standard: false)
  bigNumberStringsWenn supportBigNumbers und bigNumberStrings aktiviert sind, erzwingen, dass bigint- oder decimal-Spalten als JavaScript-String-Typen zurückgegeben werden (Standard: false)
  dateStringsErzwingen, dass timestamp-, datetime- und date-Typen als String-Typen statt als JavaScript-Date-Typen zurückgegeben werden (Standard: false)
  debugDebugging aktivieren (Standard: false)
  multipleStatementsMehrere MySQL-Anweisungen in einer einzigen Abfrage zulassen (Standard: false)
  FlagsWird verwendet, um Verbindungsflags zu ändern
  sslSSL-Parameter verwenden (gleiches Format wie crypto.createCredenitals-Parameter) oder eine Zeichenkette, die den Namen einer SSL-Konfigurationsdatei enthält. Derzeit sind nur Amazon RDS-Konfigurationsdateien mitgeliefert.

Weitere Details finden Sie unter:https://github.com/mysqljs/mysql


Datenbankoperationen (CURD)

Bevor Sie Datenbankoperationen durchführen, müssen Sie die auf dieser Seite bereitgestellte SQL-Datei websites.sql für die Tabelle Websites in Ihre MySQL-Datenbank importieren.

Der in diesem Tutorial getestete MySQL-Benutzername ist root, das Passwort ist 123456 und die Datenbank ist test. Sie müssen sie entsprechend Ihrer eigenen Konfiguration ändern.

Daten abfragen

Nachdem Sie die oben von uns bereitgestellte SQL-Datei in die Datenbank importiert haben, führen Sie den folgenden Code aus, um die Daten abzufragen:

Daten abfragen

var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var sql = 'SELECT * FROM websites'; //query connection.query(sql,function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } console.log('--------------------------SELECT----------------------------'); console.log(result); console.log('------------------------------------------------------------\n\n'); }); connection.end();

Führen Sie den folgenden Befehl aus; das Ausgabeergebnis ist:

$ node test.js
--------------------------SELECT----------------------------
[ RowDataPacket {
    id: 1,
    name: 'Google',
    url: 'https://www.google.cm/',
    alexa: 1,
    country: 'USA' },
  RowDataPacket {
    id: 2,
    name: '淘宝',
    url: 'https://www.taobao.com/',
    alexa: 13,
    country: 'CN' },
  RowDataPacket {
    id: 3,
    name: 'Example',
    url: 'http://www.example.com/',
    alexa: 4689,
    country: 'CN' },
  RowDataPacket {
    id: 4,
    name: '微博',
    url: 'http://weibo.com/',
    alexa: 20,
    country: 'CN' },
  RowDataPacket {
    id: 5,
    name: 'Facebook',
    url: 'https://www.facebook.com/',
    alexa: 3,
    country: 'USA' } ]
------------------------------------------------------------

Daten einfügen

Wir können Daten in die Datentabelle websties einfügen:

Daten einfügen

var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)'; var addSqlParams = ['Beispiel-Tools', 'https://c.example.com','23453', 'CN']; //insert connection.query(addSql,addSqlParams,function (err, result) { if(err){ console.log('[INSERT-FEHLER] - ',err.message); return; } console.log('--------------------------INSERT----------------------------'); //console.log('INSERT ID:',result.insertId); console.log('INSERT-ID:',result); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();

Führen Sie den folgenden Befehl aus; das Ausgabeergebnis ist:

$ node test.js
--------------------------INSERT----------------------------
INSERT ID: OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 6,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }
-----------------------------------------------------------------

Nach erfolgreicher Ausführung sehen Sie in der Datentabelle die hinzugefügten Daten:

Daten aktualisieren

Wir können auch die Daten in der Datenbank ändern:

Daten aktualisieren

var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?'; var modSqlParams = ['Beispiel Mobile-Website', 'https://m.example.com',6]; //update connection.query(modSql,modSqlParams,function (err, result) { if(err){ console.log('[UPDATE ERROR] - ',err.message); return; } console.log('--------------------------UPDATE----------------------------'); console.log('UPDATE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();

Führen Sie den folgenden Befehl aus; das Ausgabeergebnis ist:

--------------------------UPDATE----------------------------
UPDATE affectedRows 1
-----------------------------------------------------------------

Nach erfolgreicher Ausführung können Sie die Datentabelle anzeigen und die aktualisierten Daten sehen:

Daten löschen

Wir können den folgenden Code verwenden, um die Daten mit der ID 6 zu löschen:

Daten löschen

var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', port: '3306', database: 'test' }); connection.connect(); var delSql = 'DELETE FROM websites where id=6'; //delete connection.query(delSql,function (err, result) { if(err){ console.log('[DELETE ERROR] - ',err.message); return; } console.log('--------------------------DELETE----------------------------'); console.log('DELETE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end();

Führen Sie den folgenden Befehl aus; das Ausgabeergebnis ist:

--------------------------DELETE----------------------------
DELETE affectedRows 1
-----------------------------------------------------------------

Nach erfolgreicher Ausführung sehen Sie in der Datentabelle, dass die Daten mit id=6 gelöscht wurden:

Andere Erweiterungen