Recientemente miré algunos ejemplos de conexión a SQLServer bajo NodeJS, y descubrí que hay dos módulos en NodeJs, uno es mssql y su dirección npm es: https://www.npmjs.com/package/mssql ; el otro es: tedioso, que La dirección de npm es: https://www.npmjs.com/package/tedious , la dirección correspondiente de github es: https://github.com/tediousjs/tedious
Primero, use mssql para conectarse a la base de datos SQLServer
1. Cree una base de datos UserDB, luego cree una tabla t_user, agregue algunos datos para la tabla t_user
He instalado SQLServer 2012 en mi sistema Window 10. Todavía estoy acostumbrado a usar el software de cliente de base de datos Navicat Premium 12. Creo que SQL Server Management Studio es relativamente voluminoso. Después de conectarse a la base de datos SQLServer en Navicat Premium 12, cree una base de datos como UserDB y luego cree una tabla t_user para ella. Su estructura se muestra en la siguiente figura:
agregue algunos datos a t_user, como se muestra en la siguiente figura: El
script SQL completo es el siguiente:
/*
Navicat Premium Data Transfer
Source Server : localhost_SqlServer
Source Server Type : SQL Server
Source Server Version : 11002100
Source Host : localhost:1433
Source Catalog : UserDB
Source Schema : dbo
Target Server Type : SQL Server
Target Server Version : 11002100
File Encoding : 65001
Date: 06/03/2020 07:50:41
*/
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[t_user]') AND type IN ('U'))
DROP TABLE [dbo].[t_user]
GO
CREATE TABLE [dbo].[t_user] (
[name] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
[age] int NULL,
[sex] tinyint NULL
)
GO
ALTER TABLE [dbo].[t_user] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO [dbo].[t_user] VALUES (N'小明', N'23', N'1')
GO
INSERT INTO [dbo].[t_user] VALUES (N'王五', N'21', N'1')
GO
INSERT INTO [dbo].[t_user] VALUES (N'小红', N'20', N'0')
GO
INSERT INTO [dbo].[t_user] VALUES (N'小丽', N'22', N'0')
GO
2. Use el módulo mssql para conectarse a la base de datos SQLServer
Instale el paquete de dependencia correspondiente antes de usar mssql
npm install mssql
// mssql模块的简单使用
// https://www.npmjs.com/package/mssql
var sql = require('mssql');
// DB configuration
var dbConfig = {
user: 'sa',
password: '1030',
server: 'localhost',
database: 'UserDB',
port: 1433,
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
}
};
// 查询所有的用户信息
function getAllUsers() {
var conn = new sql.ConnectionPool(dbConfig);
//console.log(conn);
var req = new sql.Request(conn);
conn.connect(function (err) {
if (err) {
console.log(err);
return;
}
// 查询t_user表
req.query("SELECT * FROM t_user", function (err, recordset) {
if (err) {
console.log(err);
return;
}
else {
console.log(recordset);
}
conn.close();
});
});
}
// 查询所有的用户信息
getAllUsers();
La captura de pantalla del resultado en ejecución en Viusal Studio Code se muestra a continuación:
Use tedious para conectarse a la base de datos SQLServer
Módulo de nodo TDS para conectarse a bases de datos de SQL Server. Http://tediousjs.github.io/tedious/Sobre
el uso de tedious, la introducción en github y npmjs es muy simple, puede consultar los 5 programas de muestra proporcionados en el sitio web oficial https: // github .com / tediousjs / tedious / tree / master / examples es minimal.js , simple-client.js , parameters.js , SavedProcedureWithParameters.js , bulkLoad-sample.js
instale un tedioso módulo bajo la línea de comandos de VSCode, de la siguiente manera:
npm install tedious
El código de muestra es el siguiente:
var Connection = require('tedious').Connection
var Request = require('tedious').Request
var config = {
userName: 'your_username', // update me
password: 'your_password', // update me
server: 'localhost'
}
var connection = new Connection(config)
connection.on('connect', function (err) {
if (err) {
console.log(err)
} else {
executeStatement()
}
})
function executeStatement () {
request = new Request("select 123, 'hello world'", function (err, rowCount) {
if (err) {
console.log(err)
} else {
console.log(rowCount + ' rows')
}
connection.close()
})
request.on('row', function (columns) {
columns.forEach(function (column) {
if (column.value === null) {
console.log('NULL')
} else {
console.log(column.value)
}
})
})
connection.execSql(request)
}
Base de datos integrada expresa
Es más conveniente integrar la base de datos en Express. Para obtener más información, consulte la integración de la base de datos de Express Chinese Network : integración de Express-Database
Programa de muestra para usar tedioso para conectarse a la base de datos SQLServer
- 1. En su editor de texto favorito, cree un nuevo archivo sqltest.js.
- 2. Reemplace su contenido con el siguiente código. Luego, agregue los valores apropiados para el servidor, la base de datos, el usuario y la contraseña.
const { Connection, Request } = require("tedious");
// Create connection to database
const config = {
authentication: {
options: {
userName: "username", // update me
password: "password" // update me
},
type: "default"
},
server: "your_server.database.chinacloudapi.cn", // update me
options: {
database: "your_database", //update me
encrypt: true
}
};
const connection = new Connection(config);
// Attempt to connect and execute queries if connection goes through
connection.on("connect", err => {
if (err) {
console.error(err.message);
} else {
queryDatabase();
}
});
function queryDatabase() {
console.log("Reading rows from the Table...");
// Read all rows from table
const request = new Request(
`SELECT TOP 20 pc.Name as CategoryName,
p.name as ProductName
FROM [SalesLT].[ProductCategory] pc
JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid`,
(err, rowCount) => {
if (err) {
console.error(err.message);
} else {
console.log(`${rowCount} row(s) returned`);
}
}
);
request.on("row", columns => {
columns.forEach(column => {
console.log("%s\t%s", column.metadata.colName, column.value);
});
});
connection.execSql(request);
}