15
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?