Express連接MySQL及數(shù)據(jù)庫(kù)連接池技術(shù)實(shí)例
Express連接MySQL
準(zhǔn)備工作
打開(kāi)webstorm新建項(xiàng)目選擇express創(chuàng)建一個(gè)express項(xiàng)目。
創(chuàng)建成功后其頁(yè)面如下:
為了連接mysql數(shù)據(jù)庫(kù)還需要導(dǎo)入mysql模塊。
創(chuàng)建配置文件
在項(xiàng)目中創(chuàng)建config文件,在config文件中創(chuàng)建congfigdb.js文件用來(lái)連接數(shù)據(jù)庫(kù),在文件中寫入:
var mysql = { host: "127.0.0.1",//這是數(shù)據(jù)庫(kù)的地址 user: "root",//需要用戶的名字 password: "root23",//用戶密碼 ,如果你沒(méi)有密碼,直接雙引號(hào)就是 database: "info",//數(shù)據(jù)庫(kù)名字 port:3306//數(shù)據(jù)庫(kù)使用的端口號(hào) } module.exports = mysql;//用module.exports暴露出這個(gè)接口
創(chuàng)建操作數(shù)據(jù)庫(kù)的接口文件
const express = require('express'); const router = express.Router(); //導(dǎo)入MySQL 模塊 const mysql = require('mysql'); //導(dǎo)入配置文件 const db = require('../config/configdb'); router.get('test',(req,res)=>{ //創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象 let conn = mysql.createConnection(db); //查詢bookinfo中所有數(shù)據(jù) conn.query('select * from student',(err,results,fieldes)=>{ //fieldes表示具體的字段 if(err){ throw err; } res.send(results); }) //關(guān)閉數(shù)據(jù)庫(kù)鏈接 conn.end((err)=>{ console.log(err); }) module.exports = router;
完成之后在app.js文件中添加:
var dbRouter = require('./routes/option') app.use('/db',dbRouter);
在Postman中測(cè)試如下:
數(shù)據(jù)庫(kù)連接池技術(shù)
什么是數(shù)據(jù)庫(kù)連接池
數(shù)據(jù)庫(kù)連接池是程序啟動(dòng)時(shí)建立足夠數(shù)量的數(shù)據(jù)庫(kù)連接對(duì)象,并將這些連接對(duì)象組成一個(gè)池,由程序動(dòng)態(tài)地對(duì)池中的連接對(duì)象進(jìn)行申請(qǐng)、使用和釋放。
數(shù)據(jù)庫(kù)連接池的作用是什么?
數(shù)據(jù)庫(kù)的連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接對(duì)象的。它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)的連接對(duì)象。而不是重新創(chuàng)建一個(gè)。
數(shù)據(jù)庫(kù)連接池技術(shù)實(shí)例
1、導(dǎo)入mysql模塊
var mysql = require('mysql');
2、創(chuàng)建數(shù)據(jù)庫(kù)連接池
創(chuàng)建連接池
var pool = mysql.createPool(options);
options 參數(shù)是一個(gè)對(duì)象,該對(duì)象中有很多屬性配置,該對(duì)象的作用是用于指定該連接池中連接統(tǒng)一使用的各種選項(xiàng)。
//創(chuàng)建數(shù)據(jù)庫(kù)連接池 const pool = mysql.createPool({ connectionLimit:20, host:'localhost', port:3306, user:'root', password:'123456', database:'info' }) //導(dǎo)出數(shù)據(jù)庫(kù)連接池對(duì)象 module.exports = pool;
connectionLimit
:用于指定連接池中最大的鏈接數(shù),默認(rèn)屬性值為10.queueLimit
:用于指定允許掛起的最大連接數(shù),如果掛起的連接數(shù)超過(guò)該數(shù)值,就會(huì)立即拋出一個(gè)錯(cuò)誤,默認(rèn)屬性值為0.代表不允許被掛起的最大連接數(shù)。multipleStatements
:是否允許執(zhí)行多條sql語(yǔ)句,默認(rèn)值為falsehost
:數(shù)據(jù)庫(kù)服務(wù)器的地址user
:連接數(shù)據(jù)庫(kù)的用戶名password
:連接數(shù)據(jù)庫(kù)的密碼database
:數(shù)據(jù)庫(kù)名
3、獲取數(shù)據(jù)庫(kù)鏈接對(duì)象
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、釋放數(shù)據(jù)庫(kù)連接對(duì)象
conn.release();
完整實(shí)例
const express = require('express'); const pool = require('../config/dbmysql'); const router = express.Router(); /* * http://localhost:3000/dbmysql/books * */ router.get('/books',(req,res)=>{ //從數(shù)據(jù)庫(kù)連接池中獲取數(shù)據(jù)庫(kù)連接對(duì)象 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;
結(jié)果測(cè)試:
到此這篇關(guān)于Express連接MySQL及數(shù)據(jù)庫(kù)連接池技術(shù)的文章就介紹到這了,更多相關(guān)Express連接mysql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 淺析node連接數(shù)據(jù)庫(kù)(express+mysql)
- node+express框架中連接使用mysql(經(jīng)驗(yàn)總結(jié))
- 用node和express連接mysql實(shí)現(xiàn)登錄注冊(cè)的實(shí)現(xiàn)代碼
- Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查
- 初識(shí)NodeJS服務(wù)端開(kāi)發(fā)入門(Express+MySQL)
- node基于express框架操作Mysql數(shù)據(jù)庫(kù)的步驟
- Node.js+Express+Vue+MySQL+axios的項(xiàng)目搭建全過(guò)程
- express.js如何做mysql注入與node-mysql中防止SQL注入方法解析
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)壓縮版本安裝與配置詳細(xì)教程
今天教各位小伙伴怎么安裝及配置Mysql數(shù)據(jù)庫(kù),文中有非常詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)剛?cè)腴Tmysql的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05mysql存儲(chǔ)過(guò)程如何利用臨時(shí)表返回結(jié)果集
這篇文章主要介紹了mysql存儲(chǔ)過(guò)程如何利用臨時(shí)表返回結(jié)果集,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09在Windows主機(jī)上定時(shí)備份遠(yuǎn)程VPS(CentOS)數(shù)據(jù)的批處理
我想在自己的 Windows7 下每天/周運(yùn)行一次備份,就有了這個(gè)小工具2012-05-05MySQL一鍵安裝Shell腳本的實(shí)現(xiàn)
本文主要介紹了MySQL一鍵安裝Shell腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Mysql 乘法除法精度不一致問(wèn)題(除法后四位小數(shù))
這篇文章主要介紹了Mysql 乘法除法精度不一致,除法后四位小數(shù),本文通過(guò)問(wèn)題分析實(shí)例代碼講解,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03MySQL?移動(dòng)數(shù)據(jù)目錄后啟動(dòng)失敗問(wèn)題解決
由于安裝數(shù)據(jù)庫(kù)時(shí)將MySQL的數(shù)據(jù)目錄放在了根目錄下,現(xiàn)在存儲(chǔ)空間不足,遇到這個(gè)問(wèn)題如何解決呢,下面小編給大家?guī)?lái)了mysql移動(dòng)數(shù)據(jù)目錄啟動(dòng)失敗解決方法,感興趣的朋友一起看看吧2023-04-04Navicat數(shù)據(jù)存放位置和備份數(shù)據(jù)庫(kù)路徑設(shè)置方式
這篇文章主要介紹了Navicat數(shù)據(jù)存放位置和備份數(shù)據(jù)庫(kù)路徑設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01