Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Node.js SQL-illesztőprogram letöltése
Ezt a példát csak a koncepció bizonyítékának kell tekinteni. A mintakód egyszerűbb az egyértelműség kedvéért, és nem feltétlenül a Microsoft által ajánlott ajánlott eljárásokat jelöli. A GitHub-mintaadattárban további példák is elérhetők, amelyek ugyanazokat a kulcsfontosságú függvényeket használják.
Előfeltételek
A mintakód futtatása előtt győződjön meg arról, hogy a következő előfeltételek teljesülnek:
- Node.js telepítve van a fejlesztői gépen. Töltse le a nodejs.org-ról.
- A fárasztó npm-csomag telepítve van. Futtassa a
npm install tediousa projektkönyvtárban. - Elérhető és konfigurált SQL Server-példány a kapcsolatok elfogadására:
- A TCP/IP protokoll engedélyezve van az SQL Server Configuration Managerben. A TCP/IP alapértelmezés szerint le van tiltva az SQL Server Express-kiadásokban.
- Az SQL Server Browser szolgáltatás akkor fut, ha névvel ellátott példányhoz csatlakozik.
- A tűzfal engedélyezi a kapcsolatokat az SQL Server-porton (alapértelmezett: 1433).
- Az SQL Server-hitelesítéshez engedélyezve van az SQL-bejelentkezés, és az SQL Server vegyes módú hitelesítésre van konfigurálva.
Jótanács
Ha például Failed to connectcsatlakozási hibát kap, ellenőrizze, hogy engedélyezve van-e a TCP/IP, és fut-e az SQL Server szolgáltatás. Helyi fejlesztéshez próbáljon meg csatlakozni a következőhöz server: 'localhost' : vagy server: '127.0.0.1'.
1. lépés: Csatlakozás
Az új Kapcsolat függvény használatával csatlakozzon az SQL Database-hez.
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();
2. lépés: Lekérdezés végrehajtása
Hajtsa végre az összes SQL-utasítást az új Request függvénnyel. Ha az utasítás sorokat ad vissza, például egy választó utasítást, lekérheti őket a request.on függvénnyel. Ha nincsenek sorok, a request.on függvény üres listákat ad vissza.
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);
}
3. lépés: Sor beszúrása
Ebben a példában azt látja, hogyan hajthat végre biztonságosan egy INSERT utasítást olyan paraméterek átadásával, amelyek megvédik az alkalmazást az SQL-injektálási értékektől.
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);
}
4. lépés: Csatlakozás Windows-hitelesítéssel
A unalmas illesztőprogram támogatja a Windows-hitelesítést az NTLM használatával. Ha az SQL Server-hitelesítés helyett tartományi hitelesítő adatokkal szeretne csatlakozni, módosítsa a authentication kapcsolatkonfiguráció szakaszát:
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();
Megjegyzés:
Az NTLM-hitelesítéshez tartományi hitelesítő adatokat kell megadnia a konfigurációban. Azoknak a megbízható kapcsolatoknak, amelyek a jelenleg bejelentkezett Windows-felhasználót használják hitelesítő adatok megadása nélkül, fontolja meg az msnodesqlv8 csomagot, amely a natív ODBC-illesztőprogramot használja.