自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

怎樣在前端項(xiàng)目中使用MySQL模塊操作數(shù)據(jù)庫?

開發(fā) 前端 MySQL
要想在項(xiàng)目中操作數(shù)據(jù)庫, 首先要安裝操作 MySQL 數(shù)據(jù)庫的第三方模塊(mysql), 借助mysql 模塊連接到 MySQL 數(shù)據(jù)庫, 執(zhí)行 SQL 語句,具體的流程如下圖所示。

要想在項(xiàng)目中操作數(shù)據(jù)庫, 首先要安裝操作 MySQL 數(shù)據(jù)庫的第三方模塊(mysql), 借助mysql 模塊連接到 MySQL 數(shù)據(jù)庫, 執(zhí)行 SQL 語句,具體的流程如下圖所示。

安裝與配置 mysql 模塊

1. 安裝 mysql 模塊

mysql 模塊是托管于 npm 上的第三方模塊。它提供了在 Node.js 項(xiàng)目中連接和操作 MySQL 數(shù)據(jù)庫的能力。 想要在項(xiàng)目中使用它,需要先運(yùn)行如下命令,將 mysql 安裝為項(xiàng)目的依賴包:

npm install mysql

2. 配置 mysql 模塊

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

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

3. 測試 mysql 模塊能否正常工作

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

//檢測mysq1模塊能否正常工作
db.query('SELECT 1', (err, results) => {
   if (err) return console.log(err.message)
   //只要能打印出[RowDataPacket{'1':1}]的結(jié)果,就證明數(shù)據(jù)庫連接正常
   console.log(results)
})

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

1. 查詢數(shù)據(jù)

查詢 users 表中所有的數(shù)據(jù)

//查詢users表中所有的用戶數(shù)據(jù)
db.query('SELECT * FROM users', (err, results) => {
    //查詢失敗
    if (err) return console.log(err.message)
    //查詢成功
    console.log(results)
})

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

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

// 1. 要插入到users表中的數(shù)據(jù)對(duì)象
const user = { username: 'Spider-Man', password: 'pcc321' }
// 2. 待執(zhí)行的 SQL 語句,其中英文的? 表示占位符
const sqlStr = 'INSERT INTO users (username, password) VALUES (?, ?)'
// 3. 使用數(shù)組的形式,依次為?占位符指定具體的值
db.query(sqlStr, [user.username, user.password], (err, results) =? {
   if(err)return console.log(err.message)//失敗
   if(results.affectedRows=== 1) { console.log('插入數(shù)據(jù)成功') } // 成功
})

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

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

// 1. 要插入到users表中的數(shù)據(jù)對(duì)象
const (vser = { username: 'Spider-Man2', password: 'pcc4321'}
// 2. 待執(zhí)行的SQL語句,其中英文的?表示占位符
const sqlStr = 'INSERT INTO users SET ?'
// 3. 直接將數(shù)據(jù)對(duì)象當(dāng)作占位符的值
db.query(sqlStr, user, (err, results) => {
   if(err)return console.log(err.message)//失敗
   if(results.affectedRows===1){console.log('插入數(shù)據(jù)成功')}//成功
})

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

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

// 1.要更新的數(shù)據(jù)對(duì)象
const user = { id: 7, username: 'aaa', password: '000' }
// 2.要執(zhí)行的SQL 語句
const sqlStr = 'UPDATE users SET username=?, password=? WHERE id=?'
// 3.調(diào)用db.query()執(zhí)行 SQL 語句的同時(shí),使用數(shù)組依次為占位符指定具體的值
db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
   if(err)return console.log(err.message) // 失敗
   if(results.affectedRows===1){console.log('更新數(shù)據(jù)成功!')}//成功
})

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

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

// 1. 要更新的數(shù)據(jù)對(duì)象
const user = { id: 7, username: 'aaaa', password: '0000' }
// 2. 要執(zhí)行的 SQL 語句
const sqlStr = 'UPDATE users SET ? WHERE id=?'
// 3. 調(diào)用db.query()執(zhí)行 SQL 語句的同時(shí),使用數(shù)組依次為占位符指定具體的值
db.query(sqlStr,[user,user.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í),來刪除對(duì)應(yīng)的數(shù)據(jù)。示例如下:

// 1.要執(zhí)行的 SQL 語句
const sqlStr = 'DELETE FROM users WHERE id=?'
// 2.調(diào)用 db.query()執(zhí)行 SQL語句的同時(shí),為占位符指定具體的值
// 注意:如果SQL語句中有多個(gè)占位符,則必須使用數(shù)組為每個(gè)占位符指定具體的值
//        如果SQL語句中只有一個(gè)占位符,則可以省略數(shù)組
db.query(sqlStr, 7, (err, results) => {
   if(err)return console.log(err.message)//失敗
   if(results.affectedRows ===1){console.log('刪除數(shù)據(jù)成功!‘)}//成功
})

7. 標(biāo)記刪除

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

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

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

//標(biāo)記刪除:使用 UPDATE 語句替代 DELETE語句;只更新數(shù)據(jù)的狀態(tài),并沒有真正刪除
db.query('UPDATE USERS SET status=1 WHERE id=?', 6, (err, results) =>(
  if(err)return console.log(err.message)//失敗
  if(results.affectedRows === 1){console.log('刪除數(shù)據(jù)成功!')}//成功
})
責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2011-07-05 10:27:06

MySQL數(shù)據(jù)庫檢索排序

2011-07-01 13:42:24

QT 數(shù)據(jù)庫

2009-09-15 09:50:07

Linq操作數(shù)據(jù)庫

2020-11-16 08:56:02

Python

2021-06-29 06:25:22

Nest.jsTypeORM數(shù)據(jù)庫

2011-04-19 10:20:09

數(shù)據(jù)庫

2009-09-03 09:52:26

C# treeview

2023-05-23 16:25:48

MyBatisSQL數(shù)據(jù)庫

2009-07-07 09:24:37

LINQ檢索

2009-08-24 16:46:04

C# 泛型

2009-08-04 14:52:33

Visual Web ASP.NET

2023-12-27 13:44:00

數(shù)據(jù)庫系統(tǒng)分布式

2023-04-27 09:36:43

2023-12-14 15:07:31

多線程數(shù)據(jù)庫代碼

2023-10-27 10:16:17

前端項(xiàng)目Rust

2022-10-09 15:41:54

Python數(shù)據(jù)庫

2016-05-11 10:09:49

數(shù)據(jù)層代碼FastQuery

2011-01-20 10:39:09

postfixmysql

2009-12-28 16:57:40

ADO .NET 類

2021-01-29 10:51:48

高并發(fā)數(shù)據(jù)庫緩存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)