国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SQL server】NodeJs 服務(wù)器連接數(shù)據(jù)庫(kù)

這篇具有很好參考價(jià)值的文章主要介紹了【SQL server】NodeJs 服務(wù)器連接數(shù)據(jù)庫(kù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

有客戶需求可以查看生產(chǎn)數(shù)據(jù),而 CS 端的 Web 程序運(yùn)行存在部分問題,Web 客戶端只是顯示生產(chǎn)數(shù)據(jù),其他功能沒有用到,因此為了可以快速開發(fā)以及更加方便的操作,減低客戶成本,為此采用 node 直連數(shù)據(jù)庫(kù)的方式來獲取生產(chǎn)數(shù)據(jù)。

基本思路

Vue3來快速設(shè)計(jì)生產(chǎn)看板,實(shí)時(shí)數(shù)據(jù)的獲取利用 Node 服務(wù)器來直接與數(shù)據(jù)庫(kù)打交道,選用官網(wǎng)推薦的 tedious 模塊來獲取連接。

部署服務(wù)端

大家都知道 Vue3 客戶端項(xiàng)目是無法直接操作數(shù)據(jù)庫(kù)的,因此需要利用 NodeJs 來搭建一個(gè)建議版本的服務(wù)器,快捷又便捷,果然技術(shù)都是為了業(yè)務(wù)而服務(wù)的。

先決條件

  • Node.js

我個(gè)人喜歡使用 nvm 來管理 Node.js ,因?yàn)樗试S電腦擁有多個(gè)版本的 Node.js ,只需要使用 nvm use <version> 來切換版本就可以啦。

下載依賴包我個(gè)人喜歡使用 pnpm 來下載依賴包,使用 npm install -g pnpm 就可以全局使用 pnpm 命令了,盡管它前段時(shí)間服務(wù)器崩潰了一次,也不影響我對(duì)其的熱愛。

配置用于 Node.js 開發(fā)的開發(fā)環(huán)境

選擇一個(gè)空目錄作為項(xiàng)目服務(wù)端的目錄,或者直接把服務(wù)端和客戶端放在同一個(gè)目錄也可以,然后創(chuàng)建 Node 項(xiàng)目:

pnpm init

創(chuàng)建后,會(huì)生成一個(gè) package.json 文件,在項(xiàng)目中安裝 tedious 模塊:

pnpm install tedious

使用 Node.js 連接到 SQL 的概念證明

創(chuàng)建連接之前,需要確保電腦有 SQL server 的驅(qū)動(dòng)。

創(chuàng)建連接

利用 Connection 類來配置 SQL 數(shù)據(jù)庫(kù)連接:

const Connection = require('tedious').Connection;
const SqlConfig = {
	// 數(shù)據(jù)庫(kù)地址
    server: '127.0.0.1',
    authentication: {
        type: 'default',
        options: {
        	// 用戶名
            userName: 'sa',
            // 密碼
            password: '123456'
        }
    },
    options: {
        encrypt: false,
        // 數(shù)據(jù)庫(kù)
        database: 'test'
    }
}
const connection = new Connection(SqlConfig);

執(zhí)行連接

接下來可以通過綁定事件后執(zhí)行連接,從而通過連接事件來判斷是否連接成功:

connection.on('connect', function(err) {  
    if (err) {
      console.log('數(shù)據(jù)庫(kù)連接失敗!');
      throw err;
    }
    // SQL 語(yǔ)句邏輯編寫
    console.log("Connected");  
});
connection.connect();

數(shù)據(jù)查詢

利用 Request 來設(shè)置 SQL 語(yǔ)句請(qǐng)求,在通過 rowrequestCompleted 兩個(gè)事件分別監(jiān)控行數(shù)據(jù)和是否執(zhí)行完,最后通過 execSql 函數(shù)來執(zhí)行 SQL 語(yǔ)句請(qǐng)求:

// 設(shè)置 SQL 語(yǔ)句請(qǐng)求
const request = new Request("SELECT * FROM tb_sn;", function (err) {
    if (err) {
        console.log(err);
        res.status(500).json({ error: 'Internal Server Error' });
    }
});
// 記錄查詢的數(shù)據(jù)
const result = [];
// 監(jiān)控行數(shù)據(jù)
request.on('row', function (columns) {
    let temp = {};
    // 字段遍歷獲取字段名稱和字段對(duì)應(yīng)值
    columns.forEach(function (column) {
        temp[column.metadata.colName] = column.value;
    });
    result.push(temp);
});
// 監(jiān)控 SQL 語(yǔ)句請(qǐng)求執(zhí)行完
request.on("requestCompleted", function () {
    console.log(result);
    connection.close();
    console.info('數(shù)據(jù)庫(kù)連接關(guān)閉!');
});
// 執(zhí)行 SQL 語(yǔ)句請(qǐng)求
connection.execSql(request);

完整代碼示例

server.js node ./server.js

const SqlConfig = {
	// 數(shù)據(jù)庫(kù)地址
    server: '127.0.0.1',
    authentication: {
        type: 'default',
        options: {
        	// 用戶名
            userName: 'sa',
            // 密碼
            password: '123456'
        }
    },
    options: {
        encrypt: false,
        // 數(shù)據(jù)庫(kù)
        database: 'test'
    }
}
const Connection = require('tedious').Connection;
const Request = require('tedious').Request;
const connection = new Connection(SqlConfig);

connection.on('connect', function(err) {
    console.log("Connected");  
    executeStatement();  
});  
connection.connect();

function executeStatement() {  
    // 設(shè)置 SQL 語(yǔ)句請(qǐng)求
	const request = new Request("SELECT * FROM tb_sn;", function (err) {
	    if (err) {
	        console.log(err);
	        res.status(500).json({ error: 'Internal Server Error' });
	    }
	});
	// 記錄查詢的數(shù)據(jù)
	const result = [];
	// 監(jiān)控行數(shù)據(jù)
	request.on('row', function (columns) {
	    let temp = {};
	    // 字段遍歷獲取字段名稱和字段對(duì)應(yīng)值
	    columns.forEach(function (column) {
	        temp[column.metadata.colName] = column.value;
	    });
	    result.push(temp);
	});
	// 監(jiān)控 SQL 語(yǔ)句請(qǐng)求執(zhí)行完
	request.on("requestCompleted", function () {
	    console.log(result);
	    connection.close();
	    console.info('數(shù)據(jù)庫(kù)連接關(guān)閉!');
	});
	// 執(zhí)行 SQL 語(yǔ)句請(qǐng)求
	connection.execSql(request);
}

效果圖

【SQL server】NodeJs 服務(wù)器連接數(shù)據(jù)庫(kù),前端,SQL,服務(wù)器,數(shù)據(jù)庫(kù),運(yùn)維

配置 HTTP 服務(wù)

介紹完,如何進(jìn)行數(shù)據(jù)庫(kù)連接以后,接下來就是如何進(jìn)行請(qǐng)求訪問啦。

基本思路

利用 Express 構(gòu)建精簡(jiǎn)的 Web 應(yīng)用程序功能,從而設(shè)置對(duì)外的數(shù)據(jù)請(qǐng)求接口。

安裝 Express

pnpm install express

創(chuàng)建應(yīng)用

const express = require('express');
const app= express();

配置路由

app.get('/api/sn', (req, res) => {
    res.send('Hello World!')
});

監(jiān)聽請(qǐng)求

app.listen(3000, () => {
  console.log(`Example app listening on port ${port}`)
})

完整代碼示例

server.js node ./server.js

const express = require('express');
const app = express();

app.get('/api/sn', (req, res) => {
    res.send('Hello World!')
});

app.listen(3000, () => {
  console.log(`Example app listening on port 3000`)
})

效果圖

【SQL server】NodeJs 服務(wù)器連接數(shù)據(jù)庫(kù),前端,SQL,服務(wù)器,數(shù)據(jù)庫(kù),運(yùn)維

配置跨域

  • 安裝依賴包
    pnpm install cors
    
  • 配置跨域
    const cors = require('cors');
    app.use(cors());
    

請(qǐng)求數(shù)據(jù)庫(kù)數(shù)據(jù)

相信前面兩個(gè)示例你都正常運(yùn)行了,那么接下來就是將兩者結(jié)合起來。

const express = require('express');
const cors = require('cors');
const app= express();
const port = 3000;

app.use(cors());

// 數(shù)據(jù)庫(kù)
const SqlConfig = {
    server: '127.0.0.1',
    authentication: {
        type: 'default',
        options: {
            userName: 'sa',
            password: '123456'
        }
    },
    options: {
        encrypt: false,
        database: 'test'
    }
}
const Connection = require('tedious').Connection;
const Request = require('tedious').Request;

const connection = new Connection(SqlConfig);

// 路由
app.get('/api/sn', (req, res) => {
	// 可以使用 req.query 獲取請(qǐng)求參數(shù)
    executeStatement(res, "SELECT * FROM tb_sn;");
});

// 動(dòng)態(tài)執(zhí)行 SQL 請(qǐng)求以獲取實(shí)時(shí)數(shù)據(jù)
function executeStatement(res, sql) {
    connection.on('connect', (err) => {
        console.info('數(shù)據(jù)庫(kù)連接成功!');
        const request = new Request(sql, function (err) {});
        const result = [];
        request.on('error', function (err) {
            connection.close();
            res.status(500).json({ error: 'Internal Server Error' });
        });
        request.on('row', function (columns) {
            let temp = {};
            columns.forEach(function (column) {
                temp[column.metadata.colName] = column.value;
            });
            result.push(temp);
        });
        request.on("requestCompleted", function () {
        	// 將查詢結(jié)果寫入請(qǐng)求里面 自動(dòng)返回頁(yè)面
            res.json(result);
            connection.close();
            console.info('查詢完成!');
        });
        connection.execSql(request);
    });
    connection.connect();
}

app.listen(port, () => {
    console.info(`服務(wù)器啟動(dòng)成功, 端口 ${port}`);
})

效果圖

【SQL server】NodeJs 服務(wù)器連接數(shù)據(jù)庫(kù),前端,SQL,服務(wù)器,數(shù)據(jù)庫(kù),運(yùn)維文章來源地址http://www.zghlxwxcb.cn/news/detail-828971.html

參考資料

  1. NodeJS 連接 SQL server:https://learn.microsoft.com/zh-cn/sql/connect/node-js
  2. Express 中文網(wǎng):https://www.expressjs.com.cn/starter/hello-world.html
  3. expressjs/cors:https://github.com/expressjs/cors

到了這里,關(guān)于【SQL server】NodeJs 服務(wù)器連接數(shù)據(jù)庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包