天天看點

怎樣在前端項目中使用MySQL子產品操作資料庫?

作者:黑馬程式員

要想在項目中操作資料庫, 首先要安裝操作 MySQL 資料庫的第三方子產品(mysql), 借助mysql 子產品連接配接到 MySQL 資料庫, 執行 SQL 語句,具體的流程如下圖所示。

怎樣在前端項目中使用MySQL子產品操作資料庫?

安裝與配置 mysql 子產品

1. 安裝 mysql 子產品

mysql 子產品是托管于 npm 上的第三方子產品。它提供了在 Node.js 項目中連接配接和操作 MySQL 資料庫的能力。 想要在項目中使用它,需要先運作如下指令,将 mysql 安裝為項目的依賴包:

npm install mysql           

2. 配置 mysql 子產品

在使用 mysql 子產品操作 MySQL 資料庫之前,必須先對 mysql 子產品進行必要的配置,主要的配置步驟如下:

// 1.導入mysq1子產品
const mysql = require('mysql')
// 2.建立與 MySQL資料庫的連接配接
const db = mysql.createPool({
  host: '127.0.0.1',      //資料庫的IP位址
  user: 'root',           //登入資料庫的賬号
  password:‘admin123',  //登入資料庫的密碼
  database:‘my_db_01'    //指定要操作哪個資料庫
})           

3. 測試 mysql 子產品能否正常工作

調用 db.query() 函數,指定要執行的 SQL 語句,通過回調函數拿到執行的結果:

//檢測mysq1子產品能否正常工作
db.query('SELECT 1', (err, results) => {
   if (err) return console.log(err.message)
   //隻要能列印出[RowDataPacket{'1':1}]的結果,就證明資料庫連接配接正常
   console.log(results)
})           

使用 mysql 子產品操作 MySQL 資料庫

1. 查詢資料

查詢 users 表中所有的資料

//查詢users表中所有的使用者資料
db.query('SELECT * FROM users', (err, results) => {
    //查詢失敗
    if (err) return console.log(err.message)
    //查詢成功
    console.log(results)
})           

2. 插入資料

向 users 表中新增資料, 其中 username 為 Spider-Man,password 為 pcc321。示例代碼如下:

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

3. 插入資料的便捷方式

向表中新增資料時,如果資料對象的每個屬性和資料表的字段一一對應,則可以通過如下方式快速插入資料:

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

4. 更新資料

可以通過如下方式,更新表中的資料:

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

5. 更新資料的便捷方式

更新表資料時,如果資料對象的每個屬性和資料表的字段一一對應,則可以通過如下方式快速更新表資料:

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

6. 删除資料

在删除資料時,推薦根據 id 這樣的唯一辨別,來删除對應的資料。示例如下:

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

7. 标記删除

使用 DELETE 語句,會把真正的把資料從表中删除掉。為了保險起見,推薦使用标記删除的形式,來模拟删除的動作。

所謂的标記删除,就是在表中設定類似于 status 這樣的狀态字段,來标記目前這條資料是否被删除。

當使用者執行了删除的動作時,我們并沒有執行 DELETE 語句把資料删除掉,而是執行了 UPDATE 語句,将這條資料對應的 status 字段标記為删除即可。

//标記删除:使用 UPDATE 語句替代 DELETE語句;隻更新資料的狀态,并沒有真正删除
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('删除資料成功!')}//成功
})           

繼續閱讀