Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Den Node.js SQL-Treiber herunterladen
Dieses Beispiel ist lediglich als Proof of Concept zu verstehen. Der Beispielcode ist übersichtlicher und stellt nicht unbedingt bewährte Methoden dar, die von Microsoft empfohlen werden. Andere Beispiele, die dieselben wichtigen Funktionen verwenden, sind im GitHub-Beispiel-Repository verfügbar.
Voraussetzungen
Bevor Sie den Beispielcode ausführen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Node.js auf Ihrem Entwicklungscomputer installiert ist. Laden Sie es aus nodejs.org herunter.
- Das mühsame npm-Paket wird installiert. Führen Sie
npm install tediousin Ihrem Projektverzeichnis aus. - Eine SQL Server-Instanz ist verfügbar und für die Annahme von Verbindungen konfiguriert:
- DAS TCP/IP-Protokoll ist in SQL Server Configuration Manager aktiviert. TCP/IP ist in SQL Server Express-Editionen standardmäßig deaktiviert.
- Der SQL Server-Browserdienst wird ausgeführt, wenn Sie eine Verbindung mit einer benannten Instanz herstellen.
- Die Firewall ermöglicht Verbindungen im SQL Server-Port (Standard: 1433).
- Für die SQL Server-Authentifizierung ist eine SQL-Anmeldung aktiviert, und SQL Server ist für die Authentifizierung im gemischten Modus konfiguriert.
Tipp
Wenn Sie einen Verbindungsfehler erhalten, z. B. Failed to connect, überprüfen Sie, ob TCP/IP aktiviert ist und der SQL Server-Dienst ausgeführt wird. Versuchen Sie für die lokale Entwicklung, eine Verbindung mit server: 'localhost' oder server: '127.0.0.1' herzustellen.
Schritt 1: Verbinden
Verwenden Sie die neue Verbindungsfunktion , um eine Verbindung mit SQL-Datenbank herzustellen.
var Connection = require('tedious').Connection;
var config = {
server: 'your_server.database.windows.net', //update me
authentication: {
type: 'default',
options: {
userName: 'your_username', //update me
password: 'your_password' //update me
}
},
options: {
// If you're on Microsoft Azure, you need encryption:
encrypt: true,
database: 'your_database' //update me
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
console.log("Connected");
});
connection.connect();
Schritt 2: Ausführen einer Abfrage
Führen Sie alle SQL-Anweisungen mithilfe der neuen Anforderungsfunktion aus. Wenn die Anweisung Zeilen zurückgibt, z. B. eine Select-Anweisung, können Sie sie mithilfe der Funktion request.on abrufen. Wenn keine Zeilen vorhanden sind, gibt die Funktion "request.on" leere Listen zurück.
var Connection = require('tedious').Connection;
var config = {
server: 'your_server.database.windows.net', //update me
authentication: {
type: 'default',
options: {
userName: 'your_username', //update me
password: 'your_password' //update me
}
},
options: {
// If you're on Microsoft Azure, you need encryption:
encrypt: true,
database: 'your_database' //update me
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
console.log("Connected");
executeStatement();
});
connection.connect();
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatement() {
var request = new Request("SELECT c.CustomerID, c.CompanyName,COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC;", function(err) {
if (err) {
console.log(err);}
});
var result = "";
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
result+= column.value + " ";
}
});
console.log(result);
result ="";
});
request.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
// Close the connection after the final event emitted by the request, after the callback passes
request.on("requestCompleted", function (rowCount, more) {
connection.close();
});
connection.execSql(request);
}
Schritt 3: Einfügen einer Zeile
In diesem Beispiel erfahren Sie, wie Sie eine INSERT-Anweisung sicher ausführen und Parameter übergeben, die Ihre Anwendung vor SQL-Einfügewerten schützen.
var Connection = require('tedious').Connection;
var config = {
server: 'your_server.database.windows.net', //update me
authentication: {
type: 'default',
options: {
userName: 'your_username', //update me
password: 'your_password' //update me
}
},
options: {
// If you're on Microsoft Azure, you need encryption:
encrypt: true,
database: 'your_database' //update me
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
console.log("Connected");
executeStatement1();
});
connection.connect();
var Request = require('tedious').Request
var TYPES = require('tedious').TYPES;
function executeStatement1() {
var request = new Request("INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.ProductID VALUES (@Name, @Number, @Cost, @Price, CURRENT_TIMESTAMP);", function(err) {
if (err) {
console.log(err);}
});
request.addParameter('Name', TYPES.NVarChar,'SQL Server Express 2014');
request.addParameter('Number', TYPES.NVarChar , 'SQLEXPRESS2014');
request.addParameter('Cost', TYPES.Int, 11);
request.addParameter('Price', TYPES.Int,11);
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
console.log("Product id of inserted item is " + column.value);
}
});
});
// Close the connection after the final event emitted by the request, after the callback passes
request.on("requestCompleted", function (rowCount, more) {
connection.close();
});
connection.execSql(request);
}
Schritt 4: Herstellen einer Verbindung mit der Windows-Authentifizierung
Der mühsame Treiber unterstützt die Windows-Authentifizierung mithilfe von NTLM. Um eine Verbindung mit Domänenanmeldeinformationen anstelle der SQL Server-Authentifizierung herzustellen, ändern Sie den authentication Abschnitt in der Verbindungskonfiguration:
var Connection = require('tedious').Connection;
var config = {
server: '<server>', //update me
authentication: {
type: 'ntlm',
options: {
domain: '<domain>', //update me
userName: '<username>', //update me
password: '<password>' //update me
}
},
options: {
encrypt: false,
database: '<database>', //update me
port: 1433
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
if (err) {
console.log('Connection failed', err);
} else {
console.log('Connected with Windows authentication');
}
});
connection.connect();
Hinweis
Für die NTLM-Authentifizierung müssen Sie Domänenanmeldeinformationen in der Konfiguration angeben. Berücksichtigen Sie für vertrauenswürdige Verbindungen, die den aktuell angemeldeten Windows-Benutzer verwenden, ohne Anmeldeinformationen anzugeben, das msnodesqlv8-Paket , das den systemeigenen ODBC-Treiber verwendet.