mssqlと退屈なモジュールを使用してNodeJSのSQLServerデータベースに接続する

最近、私はNodeJSの下でSQLServerに接続するいくつかの例を見て、NodeJに2つのモジュールがあり、1つはmssqlであり、そのnpmアドレスはhttps://www.npmjs.com/package/mssqlで、もう1つは退屈です。 npmアドレスはhttps://www.npmjs.com/package/tediousで、対応するgithubのアドレスはhttps://github.com/tediousjs/tediousです

まず、mssqlを使用してSQLServerデータベースに接続します。

1.データベースUserDBを作成してから、t_userテーブルを作成し、t_userテーブルにデータを追加します。

SQLServer 2012をWindow10システムにインストールしましたが、まだNavicat Premium 12データベースクライアントソフトウェアを使用していますが、SQL Server Management Studioは比較的かさばると思います。Navicat Premium 12のSQLServerデータベースに接続した後、UserDBなどのデータベースを作成し、そのデータベースのt_userテーブルを作成します。その構造を次の図に示します。次の図に示すように、
t_userテーブルノット
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を使用する前に、対応する依存関係パッケージをインストールしてください

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

Viusal Studio Codeの実行結果のスクリーンショットを以下に示します。
実行結果のスクリーンショット

面倒でSQLServerデータベースに接続する

SQL Serverデータベースに接続するためのノードTDSモジュール
Http://tediousjs.github.io/tedious/退屈な使い方については、githubとnpmjsの紹介は非常に簡単です。公式Webサイトで提供されている5つのサンプルプログラムを参照できますhttps:// github .com / tediousjs / tedious / tree / master / examplesは、minimal.jssimple-client.jsparameters.jsstoredProcedureWithParameters.jsbulkLoad-
sample.jsで、次のようにVSCodeのコマンドラインに面倒なモジュールをインストールします。

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 Chinese Networkのデータベース統合を参照しくださいExpress-Database統合

面倒なSQLServerデータベースへの接続に使用するサンプルプログラム

  • 1.お気に入りのテキストエディタで、sqltest.jsという新しいファイルを作成します。
  • 2.その内容を次のコードに置き換えます。次に、サーバー、データベース、ユーザー、およびパスワードに適切な値を追加します。
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);
}

参考資料:

元の記事131件を公開 38のような 990,000以上を訪問

おすすめ

転載: blog.csdn.net/ccf19881030/article/details/104687325