Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Descargar un controlador de SQL para Node.js
Solo debe considerarse a este ejemplo una prueba de concepto. El código de ejemplo se simplifica para mayor claridad y no representa necesariamente los procedimientos recomendados por Microsoft. Otros ejemplos, que usan las mismas funciones cruciales están disponibles en el repositorio de ejemplo de GitHub.
Paso 1: Conectar
Use la nueva función Connection para conectarse a 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();
Paso 2: Ejecutar una consulta
Ejecute todas las instrucciones SQL mediante la nueva función Request . Si la instrucción devuelve filas, como una instrucción select, puede recuperarlas mediante la función request.on . Si no hay filas, la función request.on devuelve listas vacías.
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);
}
Paso 3: Inserción de una fila
En este ejemplo, puede ver cómo ejecutar una instrucción INSERT de forma segura, pasando parámetros, que protege tu aplicación de los valores de inyección 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);
}
Paso 4: Conexión con la autenticación de Windows
El controlador tedioso admite la autenticación de Windows mediante NTLM. Para conectarse con credenciales de dominio en lugar de la autenticación de SQL Server, cambie la authentication sección de la configuración de conexión:
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();
Nota:
La autenticación NTLM requiere que proporcione credenciales de dominio en la configuración. Para las conexiones de confianza que usan el usuario de Windows que ha iniciado sesión actualmente sin especificar credenciales, considere el paquete msnodesqlv8 , que usa el controlador ODBC nativo.