NodeJS中使用mssql模块连接SQLServer数据库
- 2020 年 3 月 9 日
- 筆記
最近看了下NodeJS下连接SQLServer的一些示例,发现NodeJs中有两个模块,一个是mssql,其npm地址是:https://www.npmjs.com/package/mssql;另外一个是:tedious,其npm地址是:https://www.npmjs.com/package/tedious,github对应的地址是:https://github.com/tediousjs/tedious
一、使用mssql连接SQLServer数据库
1、创建数据库UserDB,再创建t_user表,为t_user表添加一些数据
我在自己的Window10系统中已经安装了SQLServer 2012,本人还是习惯使用Navicat Premium 12这个数据库客户端软件,觉得SQL Server Management Studio相对笨重一些。在Navicat Premium 12中连接SQLServer数据库后,创建一个数据库比如说UserDB,再为它一个t_user表,其结构如下图所示:

给t_user添加几条数据,如下图所示:

完整的SQL脚本如下:
/* 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、使用mssql模块连接SQLServer数据库
// 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();
在Viusal Studio Code中运行结果截图如下图所示:

使用tedious连接SQLServer数据库
Node TDS module for connecting to SQL Server databases. http://tediousjs.github.io/tedious/ 在VSCode的命令行下安装tedious模块,如下:
npm install tedious
示例代码如下:
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) }
Express中集成数据库
Express中集成数据库比较方便,具体可参考Express中文网的数据库集成:Express-Database integration