Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ladda ned Node.js SQL-drivrutin
Det här exemplet bör endast betraktas som ett konceptbevis. Exempelkoden förenklas för tydlighetens skull och representerar inte nödvändigtvis metodtips som rekommenderas av Microsoft. Andra exempel som använder samma viktiga funktioner är tillgängliga på GitHub-exempellagringsplatsen.
Förutsättningar
Innan du kör exempelkoden kontrollerar du att följande krav är uppfyllda:
- Node.js är installerat på utvecklingsdatorn. Ladda ned den från nodejs.org.
- Det omständliga npm-paketet är installerat. Kör
npm install tediousi projektkatalogen. - En SQL Server-instans är tillgänglig och konfigurerad för att acceptera anslutningar:
- TCP/IP-protokollet är aktiverat i SQL Server Configuration Manager. TCP/IP är inaktiverat som standard i SQL Server Express-utgåvor.
- SQL Server Browser-tjänsten körs om du ansluter till en namngiven instans.
- Brandväggen tillåter anslutningar på SQL Server-porten (standard: 1433).
- För SQL Server-autentisering aktiveras en SQL-inloggning och SQL Server har konfigurerats för autentisering i blandat läge.
Tips/Råd
Om du får ett anslutningsfel, till exempel Failed to connect, kontrollerar du att TCP/IP är aktiverat och att SQL Server-tjänsten körs. För lokal utveckling kan du prova att ansluta med server: 'localhost' eller server: '127.0.0.1'.
Steg 1: Anslut
Använd den nya anslutningsfunktionen för att ansluta till 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();
Steg 2: Kör en fråga
Kör alla SQL-instruktioner med hjälp av den nya funktionen Förfrågning . Om instruktionen returnerar rader, till exempel en select-instruktion, kan du hämta dem med funktionen request.on . Om det inte finns några rader returnerar funktionen request.on tomma listor.
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);
}
Steg 3: Infoga en rad
I det här exemplet ser du hur du kör en INSERT-instruktion på ett säkert sätt och skickar parametrar som skyddar ditt program från SQL-inmatningsvärden .
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);
}
Steg 4: Anslut med Windows-autentisering
Den omständliga drivrutinen stöder Windows-autentisering med NTLM. Om du vill ansluta med domänautentiseringsuppgifter i stället för SQL Server-autentisering ändrar du authentication avsnittet i anslutningskonfigurationen:
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();
Anmärkning
NTLM-autentisering kräver att du anger domänautentiseringsuppgifter i konfigurationen. För betrodda anslutningar som använder den inloggade Windows-användaren utan att ange autentiseringsuppgifter bör du överväga msnodesqlv8-paketet , som använder den interna ODBC-drivrutinen.