Use mssql y el tedioso módulo para conectarse a la base de datos SQLServer en NodeJS

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:
nudo de mesa t_user
agregue algunos datos a t_user, como se muestra en la siguiente figura: El
Datos en la tabla t_user
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:
Ejecutar captura de pantalla de resultados

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);
}

Materiales de referencia:

131 artículos originales publicados · Me gusta 38 · Visita 990,000+

Supongo que te gusta

Origin blog.csdn.net/ccf19881030/article/details/104687325
Recomendado
Clasificación