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

2020-03-09 16:40:48 浏览数 (1)

最近看了下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脚本如下:

代码语言:javascript复制
/*
 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数据库

代码语言:javascript复制
// 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模块,如下:

代码语言:javascript复制
npm install tedious

示例代码如下:

代码语言:javascript复制
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

0 人点赞