亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

NodeJs操作MYSQL方法詳細(xì)介紹

 更新時(shí)間:2022年08月24日 15:27:59   作者:薇z  
本章將了解如何在nodejs中操作Mysql,實(shí)際項(xiàng)目中不可能用workbench來(lái)進(jìn)行增刪改查,而是用代碼操作,接下來(lái)我們講解一下如何在 nodejs中操作Mysql

在項(xiàng)目中操作數(shù)據(jù)庫(kù)的步驟

① 安裝操作 MySQL 數(shù)據(jù)庫(kù)的第三方模塊(mysql)

② 通過(guò) mysql 模塊連接到 MySQL 數(shù)據(jù)庫(kù)

③ 通過(guò) mysql 模塊執(zhí)行 SQL 語(yǔ)句

安裝與配置 mysql 模塊

1. 安裝 mysql 模塊

mysql 模塊是托管于 npm 上的第三方模塊。它提供了在 Node.js 項(xiàng)目中連接和操作 MySQL 數(shù)據(jù)庫(kù)的能力。

想要在項(xiàng)目中使用它,需要先運(yùn)行如下命令,將 mysql 安裝為項(xiàng)目的依賴(lài)包:

npm install mysql

2. 配置 mysql 模塊

在使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫(kù)之前,必須先對(duì) mysql 模塊進(jìn)行必要的配置,主要的配置步驟如下:

// 1. 導(dǎo)入 mysql 模塊
const mysql = require('mysql')
// 2. 建立與 MySQL 數(shù)據(jù)庫(kù)的連接關(guān)系
const db = mysql.createPool({
  host: '127.0.0.1', // 數(shù)據(jù)庫(kù)的 IP 地址
  user: 'root', // 登錄數(shù)據(jù)庫(kù)的賬號(hào)
  password: '123456', // 登錄數(shù)據(jù)庫(kù)的密碼
  database: 'mydb01', // 指定要操作哪個(gè)數(shù)據(jù)庫(kù)
})

3. 測(cè)試 mysql 模塊能否正常工作

調(diào)用 db.query() 函數(shù),指定要執(zhí)行的 SQL 語(yǔ)句,通過(guò)回調(diào)函數(shù)拿到執(zhí)行的結(jié)果:

// 測(cè)試 mysql 模塊能否正常工作
 db.query('select 1', (err, results) => {
  // mysql 模塊工作期間報(bào)錯(cuò)了
  if(err) return console.log(err.message)
  // 能夠成功的執(zhí)行 SQL 語(yǔ)句
  console.log(results)
}) 

使用 mysql 模塊操作 MySQL 數(shù)據(jù)庫(kù)

1. 查詢(xún)數(shù)據(jù)

查詢(xún) user表中所有的數(shù)據(jù)

// 查詢(xún) user 表中所有的數(shù)據(jù)
 const sqlStr = 'select * from user'
db.query(sqlStr, (err, results) => {
  // 查詢(xún)數(shù)據(jù)失敗
  if (err) return console.log(err.message)
  // 查詢(xún)數(shù)據(jù)成功
  // 注意:如果執(zhí)行的是 select 查詢(xún)語(yǔ)句,則執(zhí)行的結(jié)果是數(shù)組
  console.log(results)
})

2. 插入數(shù)據(jù)

向 user 表中新增數(shù)據(jù), 其中 username 為 Spider-Man,password 為 pcc321,status為0。示例代碼如下:

// 向 user 表中,新增一條數(shù)據(jù),其中 username 的值為 Spider-Man,password 的值為 pcc123,status為0
const userdata = { username: 'Spider-Man', password: 'pcc123',status:"0" }
// 定義待執(zhí)行的 SQL 語(yǔ)句,?為占位符
const sqlStr = 'insert into user (username, password,status) values (?, ?,?)'
// 執(zhí)行 SQL 語(yǔ)句,使用數(shù)組的形式依次為?占位符指定具體的值
db.query(sqlStr, [userdata.username, userdata.password,userdata.status], (err, results) => {
  // 執(zhí)行 SQL 語(yǔ)句失敗了
  if (err) return console.log(err.message)
  // 成功了
  // 注意:如果執(zhí)行的是 insert into 插入語(yǔ)句,則 results 是一個(gè)對(duì)象
  // 可以通過(guò) affectedRows 屬性,來(lái)判斷是否插入數(shù)據(jù)成功
  if (results.affectedRows === 1) {
    console.log('插入數(shù)據(jù)成功!')
  }
})

3. 插入數(shù)據(jù)的便捷方式

向user表中新增數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表的字段一一對(duì)應(yīng),則可以通過(guò)如下方式快速插入數(shù)據(jù):

// 演示插入數(shù)據(jù)的便捷方式
const userdata = { username: 'Spider-Man2', password: 'pcc4321',status:'0'}
// 定義待執(zhí)行的 SQL 語(yǔ)句
const sqlStr = 'insert into user set ?'
// 執(zhí)行 SQL 語(yǔ)句
db.query(sqlStr, userdata, (err, results) => {
  if (err) return console.log(err.message)
  if (results.affectedRows === 1) {
    console.log('插入數(shù)據(jù)成功')
  }
}) 

4. 更新數(shù)據(jù)

可以通過(guò)如下方式,更新表中的數(shù)據(jù)

// 演示如何更新用戶(hù)的信息
const userdata = { id: 15, username: 'aaa', password: '000' }
// 定義 SQL 語(yǔ)句
const sqlStr = 'update user set username=?, password=? where id=?'
// 執(zhí)行 SQL 語(yǔ)句
db.query(sqlStr, [userdata.username, userdata.password, userdata.id], (err, results) => {
  if (err) return console.log(err.message)
  // 注意:執(zhí)行了 update 語(yǔ)句之后,執(zhí)行的結(jié)果,也是一個(gè)對(duì)象,可以通過(guò) affectedRows 判斷是否更新成功
  if (results.affectedRows === 1) {
    console.log('更新成功')
  }
})

5. 更新數(shù)據(jù)的便捷方式

更新表數(shù)據(jù)時(shí),如果數(shù)據(jù)對(duì)象的每個(gè)屬性和數(shù)據(jù)表的字段一一對(duì)應(yīng),則可以通過(guò)如下方式快速更新表數(shù)據(jù):

// 演示更新數(shù)據(jù)的便捷方式
const userdata = { id: 6, username: 'aaaa', password: '0000' }
// 定義 SQL 語(yǔ)句
const sqlStr = 'update users set ? where id=?'
// 執(zhí)行 SQL 語(yǔ)句
db.query(sqlStr, [userdata, userdata.id], (err, results) => {
  if (err) return console.log(err.message)
  if (results.affectedRows === 1) {
    console.log('更新數(shù)據(jù)成功')
  }
}) 

6. 刪除數(shù)據(jù)

在刪除數(shù)據(jù)時(shí),推薦根據(jù) id 這樣的唯一標(biāo)識(shí),來(lái)刪除對(duì)應(yīng)的數(shù)據(jù)。示例如下:

// 刪除 id 為 5 的用戶(hù)
const sqlStr = 'delete from user where id=?'
db.query(sqlStr, 5, (err, results) => {
  if (err) return console.log(err.message)
  // 注意:執(zhí)行 delete 語(yǔ)句之后,結(jié)果也是一個(gè)對(duì)象,也會(huì)包含 affectedRows 屬性
  if (results.affectedRows === 1) {
    console.log('刪除數(shù)據(jù)成功')
  }
})

7. 標(biāo)記刪除

使用 DELETE 語(yǔ)句,會(huì)把真正的把數(shù)據(jù)從表中刪除掉。為了保險(xiǎn)起見(jiàn),推薦使用標(biāo)記刪除的形式,來(lái)模擬刪除的動(dòng)作。

所謂的標(biāo)記刪除,就是在表中設(shè)置類(lèi)似于 status 這樣的狀態(tài)字段,來(lái)標(biāo)記當(dāng)前這條數(shù)據(jù)是否被刪除。

當(dāng)用戶(hù)執(zhí)行了刪除的動(dòng)作時(shí),我們并沒(méi)有執(zhí)行 DELETE 語(yǔ)句把數(shù)據(jù)刪除掉,而是執(zhí)行了 UPDATE 語(yǔ)句,將這條數(shù)據(jù)對(duì)應(yīng)的 status 字段標(biāo)記為刪除即可。

// 標(biāo)記刪除
const sqlStr = 'update user set status=? where id=?'
db.query(sqlStr, [1, 6], (err, results) => {
  if (err) return console.log(err.message)
  if (results.affectedRows === 1) {
    console.log('標(biāo)記刪除成功')
  }
})

到此這篇關(guān)于NodeJs操作MYSQL方法詳細(xì)介紹的文章就介紹到這了,更多相關(guān)NodeJs操作MYSQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Node.js assert斷言原理與用法分析

    Node.js assert斷言原理與用法分析

    這篇文章主要介紹了Node.js assert斷言原理與用法,結(jié)合實(shí)例形式分析了assert模塊斷言函數(shù)與使用技巧,需要的朋友可以參考下
    2019-01-01
  • 解決下載了nodejs但npm?-v沒(méi)有反應(yīng)問(wèn)題的全過(guò)程

    解決下載了nodejs但npm?-v沒(méi)有反應(yīng)問(wèn)題的全過(guò)程

    最近工作中遇到了個(gè)問(wèn)題,node安裝成功,但npm無(wú)法使用,所以下面這篇文章主要給大家介紹了關(guān)于下載了nodejs但npm?-v沒(méi)有反應(yīng)問(wèn)題解決的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式

    利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式

    這篇文章主要介紹了利用nodejs讀取圖片并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • node.js中的buffer.Buffer.byteLength方法使用說(shuō)明

    node.js中的buffer.Buffer.byteLength方法使用說(shuō)明

    這篇文章主要介紹了node.js中的buffer.Buffer.byteLength方法使用說(shuō)明,本文介紹了buffer.Buffer.byteLength的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs通過(guò)釘釘群機(jī)器人推送消息的實(shí)現(xiàn)代碼

    nodejs通過(guò)釘釘群機(jī)器人推送消息的實(shí)現(xiàn)代碼

    最近在用 nodejs 寫(xiě)爬蟲(chóng),之前的 nodejs 爬蟲(chóng)代碼用 js 寫(xiě)的,感覺(jué)可維護(hù)性太差,也沒(méi)有智能提示,于是把js改用ts(typescript)重寫(xiě)一下,提升代碼質(zhì)量。接下來(lái)通過(guò)本文給大家分享nodejs通過(guò)釘釘群機(jī)器人推送消息,需要的朋友參考下吧
    2019-05-05
  • 深入理解node.js之path模塊

    深入理解node.js之path模塊

    本篇文章主要介紹了深入理解node.js之path模塊,詳細(xì)介紹了path模塊的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 詳解nodejs 文本操作模塊-fs模塊(二)

    詳解nodejs 文本操作模塊-fs模塊(二)

    這篇文章主要介紹了詳解nodejs 文本操作模塊-fs模塊(二),主要包括文件的讀寫(xiě)操作,有興趣的可以了解一下。
    2016-12-12
  • node.js微信公眾平臺(tái)開(kāi)發(fā)教程

    node.js微信公眾平臺(tái)開(kāi)發(fā)教程

    這篇文章主要為大家分享了node.js微信公眾平臺(tái)開(kāi)發(fā)教程,如何進(jìn)行微信開(kāi)發(fā),感興趣的小伙伴們可以參考一下
    2016-03-03
  • Node.js中操作MongoDB的CRUD操作指南

    Node.js中操作MongoDB的CRUD操作指南

    在Node.js中操作MongoDB常見(jiàn)的庫(kù)有mongodb原生驅(qū)動(dòng)和mongoose等,本文將使用mongodb官方驅(qū)動(dòng)包來(lái)進(jìn)行示例,在開(kāi)始之前,請(qǐng)確保已經(jīng)安裝了MongoDB數(shù)據(jù)庫(kù)并且在本地啟動(dòng)了MongoDB服務(wù),需要的朋友可以參考下
    2024-01-01
  • package.json版本號(hào)符號(hào)^和~前綴的區(qū)別

    package.json版本號(hào)符號(hào)^和~前綴的區(qū)別

    這篇文章介紹了package.json版本號(hào)符號(hào)^和~前綴的區(qū)別,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論