首頁 > 軟體

Express連線MySQL及資料庫連線池技術範例

2022-02-17 13:01:26

Express連線MySQL

準備工作

開啟webstorm新建專案選擇express建立一個express專案。

建立成功後其頁面如下:

為了連線mysql資料庫還需要匯入mysql模組。

建立組態檔

在專案中建立config檔案,在config檔案中建立congfigdb.js檔案用來連線資料庫,在檔案中寫入:

var mysql = {
    host: "127.0.0.1",//這是資料庫的地址
    user: "root",//需要使用者的名字
    password: "root23",//使用者密碼 ,如果你沒有密碼,直接雙引號就是
    database: "info",//資料庫名字
    port:3306//資料庫使用的埠號
}
module.exports = mysql;//用module.exports暴露出這個介面

建立運算元據庫的介面檔案

const express = require('express');
const router = express.Router();
//匯入MySQL 模組
const mysql = require('mysql');
//匯入組態檔
const db = require('../config/configdb');

router.get('test',(req,res)=>{
    //建立資料庫連線物件
    let conn = mysql.createConnection(db);
    //查詢bookinfo中所有資料
    conn.query('select * from student',(err,results,fieldes)=>{
        //fieldes表示具體的欄位
        if(err){
            throw err;
        }
        res.send(results);
    })
    //關閉資料庫連結
    conn.end((err)=>{
        console.log(err);
})
module.exports = router;

完成之後在app.js檔案中新增:

var dbRouter = require('./routes/option')
app.use('/db',dbRouter);

在Postman中測試如下:

資料庫連線池技術

什麼是資料庫連線池

資料庫連線池是程式啟動時建立足夠數量的資料庫連線物件,並將這些連線物件組成一個池,由程式動態地對池中的連線物件進行申請、使用和釋放。

資料庫連線池的作用是什麼?

資料庫的連線池負責分配、管理和釋放資料庫連線物件的。它允許應用程式重複使用一個現有的資料庫的連線物件。而不是重新建立一個。

資料庫連線池技術範例

1、匯入mysql模組

var mysql = require('mysql'); 

2、建立資料庫連線池

建立連線池

var pool = mysql.createPool(options);

options 引數是一個物件,該物件中有很多屬性設定,該物件的作用是用於指定該連線池中連線統一使用的各種選項。

//建立資料庫連線池
const pool = mysql.createPool({
    connectionLimit:20,
    host:'localhost',
    port:3306,
    user:'root',
    password:'123456',
    database:'info'
})
//匯出資料庫連線池物件
module.exports = pool;

connectionLimit:用於指定連線池中最大的連結數,預設屬性值為10.
queueLimit:用於指定允許掛起的最大連線數,如果掛起的連線數超過該數值,就會立即丟擲一個錯誤,預設屬性值為0.代表不允許被掛起的最大連線數。
multipleStatements :是否允許執行多條sql語句,預設值為false
host:資料庫伺服器的地址
user:連線資料庫的使用者名稱
password:連線資料庫的密碼
database:資料庫名

3、獲取資料庫連結物件

pool.getConnection((err, conn) => {
    if (err) {
        console.log(err)
    } else {
        let sql = 'select * from bookinfo';
        conn.query(sql, (err, results) => {
            if (err) {
                console.log(err)
            } else {
                res.send(results);
                conn.release();
            }
        })
    }
})

4、釋放資料庫連線物件

conn.release();

完整範例

const express = require('express');
const pool = require('../config/dbmysql');

const router = express.Router();
/*
* http://localhost:3000/dbmysql/books
* */
router.get('/books',(req,res)=>{
    //從資料庫連線池中獲取資料庫連線物件
    pool.getConnection((err,conn)=>{
        if(err){
            console.log(err)
        }else {
            let sql = 'select * from bookinfo';
            conn.query(sql,(err,results)=>{
                if (err) {
                    console.log(err)
                }else {
                    res.send(results);
                    conn.release();
                }
            })
        }
    })
})
module.exports = router;

結果測試:

到此這篇關於Express連線MySQL及資料庫連線池技術的文章就介紹到這了,更多相關Express連線mysql內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com