備忘錄_20160105(定位) 修改 回首頁

程式 2020-05-06 23:37:37 1588779457 100
node.js 讀取 sql server (非同步版本)

node.js 讀取 sql server (非同步版本)
// https://tediousjs.github.io/tedious/index.html
//
// mkdir project01
// cd    project01
// npm install tedious
//
// notepad test.js (請參考下方程式碼)
// node test.js 

var Connection = require('tedious').Connection;
var Request = require('tedious').Request;  
var TYPES = require('tedious').TYPES;  

var config = 
{  
  server: '127.0.0.1',  //update me
  authentication: 
  {
    type: 'default',
    options: 
    {
      userName: 'username', //update me
      password: 'password'  //update me
    }
  },
  options: 
  {
    trustServerCertificate: false,
    // If you are on Microsoft Azure, you need encryption:
    encrypt: false,
    database: 'databasename',  //update me
    port: 1433
  }
};

var connection = new Connection(config);  

connection.on
(
  'connect', 
  function(err)
  {  
    // If no error, then good to proceed.
    if(err)
    {
      console.log(err);
    }
    else
    {
      console.log("Connected");  
      executeStatement();
    }
  }
);

function helloWorld()
{
  console.log("Hello, world!");
  setTimeout(helloWorld, 5000);
}
  
function executeStatement() 
{  
  request = new Request
  (
    "select top 5 * from tablename", 
    function(err) 
    {
      console.log("new Request");
      if (err) { console.log(err); }
      connection.close();
      // process.exit();
      helloWorld();
    }
  );
  
  var result = "";
  
  request.on
  (
    'row', 
    function(columns)
    {
      console.log("request.on row");
      columns.forEach
      (
        function(column) 
        {
          if (column.value === null) { console.log('NULL'); }
          else                       { result += column.metadata.colName + ":" + column.value + " "; }
        }
      );
      console.log(result);
      result ="";
    }
  );  
  
  request.on
  (
    'done',
    function(rowCount, more) 
    {  
      console.log("request.on done");
      console.log(rowCount + ' rows returned');
    }
  );
        
  console.log("ready to execute sql");
  connection.execSql(request);
}  

console.log("Everything is okay!");
connection.connect();