NodeJS: Microsoft SQL Server in NodeJS verwenden

Allgemein

In diesem kurzen Beispiel möchte ich zeigen, wie man eine MS SQL Datenbank über NodeJS anbinden und Daten abrufen kann.

SQL Server vorbereiten

Solltest du noch gar keinen Microsoft SQL Server installiert haben, kann man über folgenden Link die Kostenlose Version "Express" über den folgenden Link laden und anschließend installieren: https://www.microsoft.com/de-de/download/details.aspx?id=42299

Und das Microsoft SQL Server Management Studio:
https://msdn.microsoft.com/library/mt238290.aspx

SQL TCP/IP aktivieren

Zunächst stellen wir sicher das TCP/IP auch aktiv ist. Hierzu ist der Sql Server Configuration Manager zu starten. Falls TCP/IP nicht läuft, dann bitte aktivieren:

Und dass der TCP Port auf 1433 gestellt ist, oder man merkt sich den dort angegebenen Port für das NodeJS File:

In diesen Beispiel nutze ich einen "lokalen Account". Das muss man in der Instanz entsprechend auch einstellen, über das SQL Management Studio:

Und den Dienst neu starten:

Das NodeJS Projekt vorbereiten

Zunächst habe ich ein neues Verzeichnis angelegt und Visual Studio Code geöffnet. Als nächstes habe ich "npm init" in der Kommandozeile angegeben, damit ich das Projekt initialisieren kann:

Als nächstes ist "node-mssql" und "tedious" mit den NPM Packet Manager zu installieren:

Datenbank anlegen

Anschließend ist eine neue Datei anzulegen. Mit dieser Datei wird eine einfache Datenbank, eine Tabelle und ein User berechtigt:

USE [master]  
GO

IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'testdb')  
DROP DATABASE [testdb]  
GO

USE [master]  
GO

/****** Creating Database [MyTestDatabase]  ******/
PRINT 'Creating Database...'  
CREATE DATABASE [testdb]  
GO  
PRINT 'Database created successfully...'  
GO  
PRINT 'Selecting database instance...'  
GO  
USE [testdb]  
GO  
PRINT 'Creating database tables...'  
CREATE TABLE [person] (ID INT, VORNAME VARCHAR(50), NACHNAME VARCHAR(50))  
GO  
PRINT 'Creating user account...'  
CREATE LOGIN [useraccount] WITH PASSWORD = 'geheim';  
GO  
PRINT "Access geben"  
EXEC sp_grantdbaccess 'useraccount', 'useraccount';  
EXEC sp_addrolemember 'db_owner', 'useraccount';  
GO  
PRINT 'Tables created successfully...'  
GO  
PRINT 'Task successful'  

Mit dem SQL Kommando "sqlcmd" führen wir die Datei anschließend aus. Mit der Option "-i" wird der Dateiname angegeben:

Jetzt sind noch ein paar Spieldaten für die Datenbank über die Kommandozeile anzulegen:

Eine kurze App für den Datenzugriff schreiben

Anschließend ist die apps.js Datei anzulegen und das mssql Modul einzubinden:

var tedious = require("tedious");  
var sql = require("node-mssql");

var queryObj = new sql.Query({  
    host: '127.0.0.1',
    username: 'useraccount',
    password: 'geheim',
    port: 1433,
    db: 'testdb'
});

queryObj.table('dbo.person')  
.data({
    'id': 'id',
    'vorname': 'vorname',
    'nachname': 'nachname'
});

queryObj.select(function(results) {  
    console.log(results);
}, function (err, sql) {
    if (err)
        console.log(err);

    console.log(sql);
})

Führt man die App aus, dann bekommt man die Dateninhalte der MS SQL Datenbank angezeigt: