NodeJS中使用mssql模块连接SQLServer数据库

最近看了下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