LoginSignup
15
22

More than 5 years have passed since last update.

NodejsでSQL Server接続

Posted at

経緯

Windows10内にある、Microsoft SQL Server 2012にあるデータを取得してFTPSでputして欲しいという要件があった。
SQL Serverなんか触ったのは、おそらく20年前くらい。
簡単な要件だったので、Nodejsで作ることにした。
その時のメモ。

SQL Driver

Windows10内のNodejsの環境が構築されているものとする。
SQL Serverへは、ODBC経由でいいはずだけど、調べてみると以下のページを発見。

Node.js Driver for SQL Server

Tedious
- Overview

ひとつのプログラムだけで実行するので、ローカルインストール

npm install tedious

接続

接続ユーザはすでに作成されているものとする。

const Connection = require('tedious').Connection;
const config = {
    server:DB_HOST,
    userName:DB_USER,
    password:DB_PASS,
    options:{
        database:DB_NAME,
        encrypt:false
    }
};

const connection = new Connection(config);
connection.on('connect', function(err) {
    if ( err ) {
        // ERROR - SQL Serer connect error.
        console.log('SQL Serer connect error.(' + err + ')');
        // 終了
        process.exit();
    }
    // Info - SQL Server connected.
    console.log('SQL Server connected.');
    // 接続したらクエリ実行
    execute();
});

実行

const Request = require('tedious').Request;
function execute() {
    // Query Request
    let sql = getQuery();
    const request = new Request(sql, function(err, rows) {
        if ( err ) {
            // ERROR - Query request error.
            console.log('Query request error.(' + err + '');
            process.exit();
        }
        // INFO - Run query. sql
        console.log('Run query. ' + sql);
        // close
        connection.close();
    });
    request.on('row', function(columns) {
       // 実行結果が返ってくる
         ....... 処理
    })
    // exec
    connection.execSql(request);
}
function getQuery() {
    // SQLを返す
    return sql;
}
15
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
22