Node.js Express 프레임워크를 사용하여 SQL Server에 연결(페이지 만들기)

16887 단어 SQLServerNode.js

소개



이전 게시물을 참조하여 SQL Server를 준비하십시오.
  • SQL Server 준비
  • 데이터베이스 테이블 데이터 준비

  • 환경



    OS:Windows 10 Pro 64bit
    DB:SQL Server 2019(Cent OS 8 on Hyper-V)
    node.js:v12.16.1
    npm:v6.13.4
    Express:v4.16.1
    Editor:Visual Studio Code

    Express 프레임워크의 병아리 만들기


    express --view=ejs
    npm install
    

    자세한 것은 여기 를 참고해 주세요.

    SQL Server에 연결 드라이버 (tedious) 설치


    npm install tedious --save
    
    D:\Node\ExpressTest01>npm install tedious --save
    npm WARN deprecated [email protected]: request has been deprecated, see https://github.com/request/request/issues/3142
    + [email protected]
    added 79 packages from 184 contributors and audited 263 packages in 16.976s
    found 0 vulnerabilities
    

    WARN으로 표시되지만 무시하고 괜찮습니다.
    이번에는 v8.0.1이 설치되었습니다.

    js 파일 작성



    routes 폴더에 sqlSample.js를 만듭니다.

    sqlSample.js
    
    var express = require('express');
    var router = express.Router();
    
    // Connectionを定義する
    var Connection = require('tedious').Connection;
    
    // SQLServerの接続定義を記載する。
    var config = {
        server: 'xxx.xxx.xxx.xxx',    // IPアドレスかサーバー名を指定する。
        authentication: {
            type: 'default',
            options: {
                userName: 'xxx',      // 接続ユーザー名を指定する。
                password: 'xxx'       // 接続ユーザーのパスワードを指定する。
            }
        },
        options: {
            encrypt: true,
            database: 'Training01'    // データベース名を指定する。
        }
    };
    
    /* GET users listing. */
    router.get('/', function (req, res, next) {
        var connection = new Connection(config);
        var content = []; // DBからselectした結果を格納する変数
    
        // DB接続した際のイベントハンドラ
        connection.on('connect', function (err) {
            if (err) {
                // ERROR - SQL Serer connect error.
                console.log('SQL Serer connect error.(' + err + ')');
                // 終了
                process.exit();
            }
            console.log("connected");
            executeStatement();
        });
    
        // DB接続を終了した際のイベントハンドラ
        // DB接続を切断した後に画面を描写する
        connection.on('end', function () {
            console.log("disconnected");
            res.render('sqlSample', { title: '製品一覧', content: content });
        });
    
        var Request = require('tedious').Request;
    
        // SQLを発行する関数
        function executeStatement() {
            // 発行するSQLを記載する
            request = new Request("SELECT * FROM ProductsMaster with (NOLOCK)", function (err) {
                if (err) {
                    console.log(err);
                }
            });
    
            var result = {}; // SQLの結果を行ごとにオブジェクトに格納する。
            // SQLの行ごとに実行するイベントハンドラ
            request.on('row', function (columns) {
                columns.forEach(function (column) {
                    if (column.value === null) {
                        console.log('NULL');
                    } else {
                        result[column.metadata.colName] = column.value;
                    }
                });
                content.push(result);
                result = {};
            });
    
            // SQLのリクエスト完了時のイベントハンドラ。
            // コネクションをクローズしないとDBにいらないプロセスが残るので、コネクションをクローズする。
            request.on('requestCompleted', function () {
                console.log('requestCompleted');
                connection.close();
            });
    
            // DBへSQLを発行する。
            connection.execSql(request);
        }
    });
    
    module.exports = router;
    

    ejs 파일 작성



    views 폴더에 sqlSample.ejs를 만듭니다.

    sqlSample.ejs
    <!DOCTYPE html>
    <html lang="ja">
        <head>
            <meta http-equiv="content-type" content="text/html; charset=UTF-8">
            <title><%= title %></title>
            <link rel='stylesheet' href='/stylesheets/style.css' />
        </head>
        <body>
            <h1><%= title %></h1>
            <div role="main">
                <table>
                    <tr>
                        <th>製品コード</th>
                        <th>製品名</th>
                        <th>単価</th>
                    </tr>
                    <% content.forEach(function (value, key) { %>
                        <tr>
                            <td><%= value.ProductsCode %></td>
                            <td><%= value.ProductsName %></td>
                            <td><%= value.UnitPrice %></td>
                        </tr>
                    <% }); %>
                </table>
            </div>
        </body>
     </html>
    

    app.js 수정



    루트 바로 아래에 있는 app.js에 다음 두 줄을 추가합니다.
    var sqlSample= require('./routes/sqlSample');
    app.use('/sqlSample', sqlSample);
    

    동작 확인



    명령 프롬프트에서 다음 명령을 실행합니다.
    npm start
    

    브라우저에서 'http://localhost:3000/sqlSample'에 액세스합니다.
    다음 캡처가 표시되면 OK입니다.



    참고/출전



    3단계: Node.js를 사용하여 SQL에 연결하는 개념 증명
    htps : // / cs. 미 c 로소 ft. 이 m / 그럼 - jp / sql / 이런 ct / 그래서 - js / s는 p 3-p 로오 f - f js?ゔ ぃ w = sql - r ゔ ぇ r ゔ ぇ r15

    Node.js에서 SQLServer2017에 연결하여 SELECT 결과를 화면에 표시하는 샘플
    h tp // 병아리 c. 하테나 bぉg. 코m/엔트리/2018/01/28/141831

    좋은 웹페이지 즐겨찾기