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

【實戰(zhàn)】nodejs 必會技能 —— 封裝 mysql 數(shù)據(jù)庫連接

這篇具有很好參考價值的文章主要介紹了【實戰(zhàn)】nodejs 必會技能 —— 封裝 mysql 數(shù)據(jù)庫連接。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


  • [mysql - mysql中文文檔翻譯 - Breword 文檔集合]:(https://www.breword.com/mysqljs-mysql)

一、準(zhǔn)備工作

安裝依賴包:

npm i mysql -s
  • [mysql - npm]:(https://www.npmjs.com/package/mysql)

二、連接數(shù)據(jù)庫

const mysql = require("mysql");
const db_config={
    host:"localhost",
    user:"root",
    password:"root",
    port:"3306",
    database:"mydb" 
}
let conn = mysql.createConnection(db_config);

// 連接數(shù)據(jù)庫
conn.connect(err => {
    if(err) {
        throw err
    } else{
        console.log("連接成功!");
    }
})

// 查詢數(shù)據(jù)庫
conn.query("select * from user", (err, res) => {
    if(err){
        throw err
    }else{
        console.log(res);
        closeMysql(conn);
    }
});

// 關(guān)閉數(shù)據(jù)庫
let closeMysql = conn => {
    conn.end(err => {
        if(err){
        	throw err
        }else{
            console.log('關(guān)閉成功!');
        }
	});
}

運行中若遇到如下報錯,請檢查輸入信息是否正確(host、port、user、password 等),jdbc配置中拿到的相關(guān)信息尤其是密碼很可能是加密后的

Error: ER_ACCESS_DENIED_ERROR: Access denied for user ‘root‘@‘localhost‘ (using password: YES)

node - MySQL 數(shù)據(jù)庫連接配置項:

  • host:主機地址 (默認(rèn):localhost)
  • user:用戶名
  • password:密碼
  • port:端口號 (默認(rèn):3306)
  • database:數(shù)據(jù)庫名
  • charset:連接字符集(默認(rèn):‘UTF8_GENERAL_CI’,注意字符集的字母都要大寫)
  • localAddress:此IP用于TCP連接(可選)
  • socketPath:連接到unix域路徑,當(dāng)使用 host 和port 時會被忽略
  • timezone:時區(qū)(默認(rèn):‘local’)
  • connectTimeout:連接超時(默認(rèn):不限制;單位:毫秒)
  • stringifyObjects:是否序列化對象(默認(rèn):‘false’ ;與安全相關(guān))
  • typeCast:是否將列值轉(zhuǎn)化為本地JavaScript類型值 (默認(rèn):true)
  • queryFormat:自定義query語句格式化方法
  • supportBigNumbers:數(shù)據(jù)庫支持bigint或decimal類型列時,需要設(shè)此option為true (默認(rèn):false)
  • bigNumberStrings:supportBigNumbers和bigNumberStrings啟用 強制bigint或decimal列以JavaScript字符串類型返回(默認(rèn):false)
  • dateStrings:強制timestamp,datetime,data類型以字符串類型返回,而不是JavaScriptDate類型(默認(rèn):false)
  • debug:開啟調(diào)試(默認(rèn):false)
  • multipleStatements:是否許一個query中有多個MySQL語句 (默認(rèn):false)
  • flags:用于修改連接標(biāo)志
  • ssl:使用ssl參數(shù)(與 crypto.createCredenitals 參數(shù)格式一至)或一個包含ssl配置文件名稱的字符串,目前只捆綁 Amazon RDS 的配置文件

歡迎關(guān)注【程序邊界】

三、數(shù)據(jù)池保持連接 & 公共方法封裝

數(shù)據(jù)庫連接池 pool 可以有效避免頻繁連接、斷開導(dǎo)致的資源消耗

1.封裝

const mysql = require('mysql')

const db_config = {
	host:"localhost",
	user:"root",
	password:"root",
	port:"3306",
	database:"mydb" 
}

let sqlConnTemp = (sql, params) => {
  return new Promise((resolve, reject) => {
    let conn = mysql.createConnection(db_config)
    let closeMysql = conn => conn.end(err => if(err) throw err )
    conn.connect((err, conn) => {
      err ? reject(err) : conn.query(sql, params, (err, data, fields) => {
        err ? reject(err) : resolve(data)
      })
      closeMysql(conn);
    })
  })
}

let sqlConn = (sql, params) => {
  return new Promise((resolve, reject) => {
  	// 連接池(保持連接)
    const pool = mysql.createPool(db_config)
    pool.getConnection((err, conn)=>{
        err ? reject(err) : conn.query(sql, params, (err, data, fields) => {
	        err ? reject(err) : resolve(data)
      	})
      	conn.release() // 僅釋放未關(guān)閉
      	// pool.end() // 關(guān)閉連接
    })
  })
}

module.exports = { sqlConn,sqlConnTemp }

2.調(diào)用

const { sqlConn }= require('./mysql')

sqlConn('select * from user_table where age = ? and sex = ?',[21, 1]).then((data) => {
    console.log(data)
    res.send(data)
}).catch((err) => {
    console.error(err)
    res.send(err)
})

若是擔(dān)心網(wǎng)絡(luò)問題造成連接失敗,可以在連接reject部分添加定時并回調(diào)連接


未完待續(xù)。。。歡迎留言一起學(xué)習(xí)探討


拓展閱讀:

  • [數(shù)據(jù)庫連接池、sequelize實現(xiàn)增刪改查等操作]:(https://blog.csdn.net/TangJing_/article/details/121602581)

四、拓展學(xué)習(xí)

1.mysql 命令行

(1)查看當(dāng)前所有數(shù)據(jù)庫:

show database;

(2)使用指定數(shù)據(jù)庫:

use DBName;

(3)查看當(dāng)前庫的所有表:

show tables;

(4)查看其它庫的所有表:

show tables from DBName;

(5)創(chuàng)建表:

create table tableName (
	colName dataType;
	colName dataType;
	...
);

(6)查看表結(jié)構(gòu)

desc tableName;

(7)查看當(dāng)前版本

  • 如果沒有連接到了 mysql 服務(wù),可以輸入以下命令:
# mysql  Ver 8.0.32 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql -V
# 用賬號 ODBC,連接上MySQL服務(wù)器,默認(rèn)連接到localhost上的3306端口。
mysql -v
# 僅限 windows 系統(tǒng)(`|`管道符;find命令查找字符串;注意引號)
mysql --help | find "Ver"
# 僅限 linux系統(tǒng)(`|`管道符;grep命令查找字符串)
mysql --help | grep Ver

權(quán)限有問題會報錯:

  • ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
  • 如果已經(jīng)連接到了 mysql 服務(wù),可以輸入以下命令:
select version();

node連接mysql封裝,數(shù)據(jù)庫,mysql,nodejs,node,node.js
或:

status;

node連接mysql封裝,數(shù)據(jù)庫,mysql,nodejs,node,node.js
或:

\s

node連接mysql封裝,數(shù)據(jù)庫,mysql,nodejs,node,node.js

2.語法規(guī)范

  • 不區(qū)分大小寫,但是建議關(guān)鍵字大寫,表名、列名小寫
  • 每條命令分號結(jié)尾
  • 每條命令根據(jù)需要,可以進(jìn)行縮進(jìn),或換行
  • 注釋
    • (1)單行注釋:#注釋文字
    • (2)單行注釋:–[空格]注釋文字
    • (3)多行注釋:/* 注釋文字

3.mysql 其他

(1)查看自己數(shù)據(jù)庫文件所在的位置

  • 在mysql文件夾找到 my.ini 文件
    node連接mysql封裝,數(shù)據(jù)庫,mysql,nodejs,node,node.js

  • 使用記事本打開:
    node連接mysql封裝,數(shù)據(jù)庫,mysql,nodejs,node,node.js

  • Ctrl+F,搜索 datadir

  • 如果上面的方式你掌握了,下面來一個終極大招:

show global variables like "%datadir%";

登入后,一行命令直接查出:

node連接mysql封裝,數(shù)據(jù)庫,mysql,nodejs,node,node.js
數(shù)據(jù)庫整體搬遷直接遷移目錄即可

my.ini

[mysqld]
# 設(shè)置3306端口
port=3306
# 設(shè)置mysql的安裝目錄
basedir=D:\\Program Files\mysql-8.0.19-winx64
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=D:\\Program Files\mysql-8.0.19-winx64\Data
# 允許最大連接數(shù)
max_connections=200
# 允許連接失敗的次數(shù)(防止有人攻擊數(shù)據(jù)庫系統(tǒng))
max_connect_errors=10
# 服務(wù)端使用的字符集默認(rèn)為UTF8
character-set-server=utf8
# 創(chuàng)建新表時將使用的默認(rèn)存儲引擎
default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件認(rèn)證
default_authentication_plugin=mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8
[client]
# 設(shè)置mysql客戶端連接服務(wù)端時默認(rèn)使用的端口
port=3306
default-character-set=utf8

轉(zhuǎn)載請留言文章來源地址http://www.zghlxwxcb.cn/news/detail-691495.html

到了這里,關(guān)于【實戰(zhàn)】nodejs 必會技能 —— 封裝 mysql 數(shù)據(jù)庫連接的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【入門必看,MySQL從0到1系列- 數(shù)據(jù)庫保姆級圖解教程:輕松掌握數(shù)據(jù)庫管理技能】

    【入門必看,MySQL從0到1系列- 數(shù)據(jù)庫保姆級圖解教程:輕松掌握數(shù)據(jù)庫管理技能】

    MySQL 是全球最流行的用于管理關(guān)系數(shù)據(jù)庫的開源數(shù)據(jù)庫軟件。除了具有強大的功能外,它還比 Microsoft SQL Server 和 Oracle 數(shù)據(jù)庫快速、可擴(kuò)展且更易于使用。因此,PHP 腳本通常用于創(chuàng)建功能強大且動態(tài)的服務(wù)器端/基于 Web 的應(yīng)用程序。 注意: ?數(shù)據(jù)庫是數(shù)據(jù)的結(jié)構(gòu)化集合 SQL

    2024年02月09日
    瀏覽(29)
  • 【入門必看,MySQL從0到1系列- 數(shù)據(jù)庫保姆級圖解教程:輕松掌握數(shù)據(jù)庫管理技能】+福利網(wǎng)盤分享MySQL從0到1資料+課程教程+視頻+源碼

    【入門必看,MySQL從0到1系列- 數(shù)據(jù)庫保姆級圖解教程:輕松掌握數(shù)據(jù)庫管理技能】+福利網(wǎng)盤分享MySQL從0到1資料+課程教程+視頻+源碼

    MySQL 是全球最流行的用于管理關(guān)系數(shù)據(jù)庫的開源數(shù)據(jù)庫軟件。除了具有強大的功能外,它還比 Microsoft SQL Server 和 Oracle 數(shù)據(jù)庫快速、可擴(kuò)展且更易于使用。因此,PHP 腳本通常用于創(chuàng)建功能強大且動態(tài)的服務(wù)器端/基于 Web 的應(yīng)用程序。 注意: ?數(shù)據(jù)庫是數(shù)據(jù)的結(jié)構(gòu)化集合 SQL

    2024年02月08日
    瀏覽(30)
  • MySQL數(shù)據(jù)庫備份實戰(zhàn)

    一、為什么進(jìn)行數(shù)據(jù)庫備份? 保證業(yè)務(wù)連續(xù)性 :數(shù)據(jù)庫中存儲著企業(yè)的核心業(yè)務(wù)數(shù)據(jù),如果數(shù)據(jù)丟失或損壞,將會對企業(yè)的業(yè)務(wù)運營產(chǎn)生重大影響。通過定期備份數(shù)據(jù)庫,可以在系統(tǒng)故障或數(shù)據(jù)丟失時快速恢復(fù)數(shù)據(jù),保證業(yè)務(wù)的連續(xù)性。 保護(hù)數(shù)據(jù)資產(chǎn) :數(shù)據(jù)庫中存儲著企業(yè)

    2024年02月08日
    瀏覽(25)
  • VsCode + CMake構(gòu)建項目 C/C++連接Mysql數(shù)據(jù)庫 | 數(shù)據(jù)庫增刪改查C++封裝 | 信息管理系統(tǒng)通用代碼 ---- 課程筆記

    VsCode + CMake構(gòu)建項目 C/C++連接Mysql數(shù)據(jù)庫 | 數(shù)據(jù)庫增刪改查C++封裝 | 信息管理系統(tǒng)通用代碼 ---- 課程筆記

    這個是B站Up主:程序員程子青的視頻? C++封裝Mysql增刪改查操作_嗶哩嗶哩_bilibili https://www.bilibili.com/video/BV1m24y1a79o/?p=6spm_id_from=pageDrivervd_source=a934d7fc6f47698a29dac90a922ba5a3 安裝mysql :mysql 下載和安裝和修改MYSQL8.0 數(shù)據(jù)庫存儲文件的路徑-CSDN博客 創(chuàng)建數(shù)據(jù)庫和表: 參考這篇文章:w

    2024年01月19日
    瀏覽(34)
  • 【數(shù)據(jù)庫】索引必知必會

    【數(shù)據(jù)庫】索引必知必會

    數(shù)據(jù)庫中索引(Index)是一種幫助快速查找數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),可以把它理解為書的目錄,通過索引能夠快速找到數(shù)據(jù)所在位置。 使用索引可以加快數(shù)據(jù)查找的效率,這是創(chuàng)建索引的最主要原因。 場景的索引數(shù)據(jù)結(jié)構(gòu)有:Hash表(通過hash算法快速定位數(shù)據(jù),但不適合范圍查詢,

    2023年04月20日
    瀏覽(26)
  • Zabbix監(jiān)控MySQL數(shù)據(jù)庫實戰(zhàn)

    zabbix監(jiān)控mysql的方式 只是安裝agent 啟用模板監(jiān)控 啟用自定義腳本的模板監(jiān)控 使用zabbix模版及結(jié)合shell腳本監(jiān)控mysql 創(chuàng)建mysql的zabbix授權(quán)用戶 mysql grant all PRIVILEGES on *.* to zabbix@\\\'localhost\\\' identified by \\\'zabbix\\\';? ###創(chuàng)建一個有權(quán)限的訪問用戶lqb密碼設(shè)置zabbix Query OK, 0 rows affected (0.04 s

    2024年02月12日
    瀏覽(16)
  • 數(shù)據(jù)庫-MySQL 實戰(zhàn)項目——學(xué)生選課系統(tǒng)數(shù)據(jù)庫設(shè)計與實現(xiàn)(附源碼)

    數(shù)據(jù)庫-MySQL 實戰(zhàn)項目——學(xué)生選課系統(tǒng)數(shù)據(jù)庫設(shè)計與實現(xiàn)(附源碼)

    ? ? ? ? 該項目非常適合MySQL入門學(xué)習(xí)的小伙伴,博主提供了源碼、數(shù)據(jù)和一些查詢語句,供大家學(xué)習(xí)和參考,代碼和表設(shè)計有什么不恰當(dāng)還請各位大佬多多指點。 ?MySQL可視化工具:navicat; ?數(shù)據(jù)庫:MySql 5.7/8.0等版本均可; ?????學(xué)生選課系統(tǒng)主要完成某學(xué)校教務(wù)系統(tǒng)中

    2024年04月08日
    瀏覽(25)
  • 【數(shù)據(jù)庫——MySQL(實戰(zhàn)項目1)】(1)圖書借閱系統(tǒng)——數(shù)據(jù)庫結(jié)構(gòu)設(shè)計

    【數(shù)據(jù)庫——MySQL(實戰(zhàn)項目1)】(1)圖書借閱系統(tǒng)——數(shù)據(jù)庫結(jié)構(gòu)設(shè)計

    經(jīng)過前期的學(xué)習(xí),我們已經(jīng)掌握數(shù)據(jù)庫基礎(chǔ)操作,因此是時候來做一個實戰(zhàn)項目了—— 圖書借閱系統(tǒng) 。對于圖書借閱系統(tǒng),相信大家不難想到至少需要 3 張表,分別是: 借閱人表 , 圖書表 和 借閱信息表 (當(dāng)然不限于這些表,大家可以根據(jù)自己的想法創(chuàng)建其它表)。 那么

    2024年02月03日
    瀏覽(33)
  • Jmeter(七) - 從入門到精通 - 建立數(shù)據(jù)庫測試計劃實戰(zhàn)<MySQL數(shù)據(jù)庫>(詳解教程)

    Jmeter(七) - 從入門到精通 - 建立數(shù)據(jù)庫測試計劃實戰(zhàn)<MySQL數(shù)據(jù)庫>(詳解教程)

    1.簡介 ? 在實際工作中,我們經(jīng)常會聽到數(shù)據(jù)庫的性能和穩(wěn)定性等等,這些有時候也需要測試工程師去評估和測試,上一篇文章主要介紹了jmeter連接和創(chuàng)建數(shù)據(jù)庫測試計劃的過程,在文中通過示例和代碼非常詳細(xì)地介紹給大家,希望對各位小伙伴和童鞋們的學(xué)習(xí)或者工作具有一

    2024年02月13日
    瀏覽(41)
  • 【MySQL】基礎(chǔ)實戰(zhàn)篇(1)—數(shù)據(jù)庫與數(shù)據(jù)表的操作

    創(chuàng)建數(shù)據(jù)庫 語法: 注: 在同一個數(shù)據(jù)庫服務(wù)器上必須是唯一的,不允許存在同名的數(shù)據(jù)庫。 此外在創(chuàng)建數(shù)據(jù)庫時如果不進(jìn)行自定義設(shè)置編碼方式,就會使用系統(tǒng)默認(rèn)的編碼方式,所以我們可以在創(chuàng)建數(shù)據(jù)庫的同時自定義設(shè)置編碼方式。 語法: 字符集 是定義MySQL存儲字符串

    2024年02月08日
    瀏覽(98)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包