Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pobieranie sterownika Node.js SQL
Ten przykład powinien być traktowany tylko jako dowód koncepcji. Przykładowy kod jest uproszczony w celu zapewnienia przejrzystości i niekoniecznie reprezentuje najlepsze rozwiązania zalecane przez firmę Microsoft. Inne przykłady, które używają tych samych kluczowych funkcji, są dostępne w repozytorium przykładowym GitHub.
Wymagania wstępne
Przed uruchomieniem przykładowego kodu upewnij się, że zostały spełnione następujące wymagania wstępne:
- Node.js jest instalowany na komputerze deweloperskim. Pobierz go z nodejs.org.
- Zainstalowany jest żmudny pakiet npm. Uruchom
npm install tediousw katalogu projektu. - Wystąpienie programu SQL Server jest dostępne i skonfigurowane do akceptowania połączeń:
- Protokół TCP/IP jest włączony w programie SQL Server Configuration Manager. Protokół TCP/IP jest domyślnie wyłączony w wersjach SQL Server Express.
- Usługa SQL Server Browser jest uruchomiona, jeśli nawiązujesz połączenie z nazwanym wystąpieniem.
- Zapora zezwala na połączenia na porcie programu SQL Server (domyślnie: 1433).
- W przypadku uwierzytelniania programu SQL Server logowanie SQL jest włączone, a program SQL Server jest skonfigurowany do uwierzytelniania w trybie mieszanym.
Wskazówka
Jeśli wystąpi błąd połączenia, taki jak Failed to connect, sprawdź, czy protokół TCP/IP jest włączony, a usługa SQL Server jest uruchomiona. W przypadku rozwoju lokalnego spróbuj nawiązać połączenie z server: 'localhost' lub server: '127.0.0.1'.
Krok 1. Łączenie
Użyj nowej funkcji Połączenie , aby nawiązać połączenie z usługą SQL Database.
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();
Krok 2. Wykonywanie zapytania
Wykonaj wszystkie instrukcje SQL przy użyciu nowej funkcji Request . Jeśli instrukcja zwraca wiersze, takie jak instrukcja select, można je pobrać przy użyciu funkcji request.on . Jeśli nie ma wierszy, funkcja request.on zwraca puste listy.
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);
}
Krok 3. Wstaw wiersz
W tym przykładzie zobaczysz, jak bezpiecznie wykonać instrukcję INSERT , przekazując parametry, które chronią aplikację przed wartościami iniekcji SQL .
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);
}
Krok 4. Nawiązywanie połączenia z uwierzytelnianiem systemu Windows
Żmudny sterownik obsługuje uwierzytelnianie systemu Windows przy użyciu protokołu NTLM. Aby nawiązać połączenie przy użyciu poświadczeń domeny zamiast uwierzytelniania programu SQL Server, zmień sekcję authentication w konfiguracji połączenia:
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();
Uwaga / Notatka
Uwierzytelnianie NTLM wymaga umieszczenia poświadczeń domeny w konfiguracji. W przypadku zaufanych połączeń korzystających z aktualnie zalogowanego użytkownika systemu Windows bez określania poświadczeń należy wziąć pod uwagę pakiet msnodesqlv8 , który używa natywnego sterownika ODBC.