首頁  >  文章  >  資料庫  >  Express連接MySQL及資料庫連線池的範例分析

Express連接MySQL及資料庫連線池的範例分析

WBOY
WBOY轉載
2023-06-03 17:58:041362瀏覽

    Express連接MySQL

    #準備工作

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

    Express連接MySQL及資料庫連線池的範例分析

    建立成功後其頁面如下:

    Express連接MySQL及資料庫連線池的範例分析

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

    Express連接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中測試如下:

    Express連接MySQL及資料庫連線池的範例分析

    #資料庫連接池技術

    什麼是資料庫連接池

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

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

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

    資料庫連線池技術實例

    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及資料庫連線池的範例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除