Node.js如何在項目中操作MySQL
1、在項目中操作 MySQL的步驟
(1)安裝操作 MySQL 數據庫的第三方模塊(mysql)
(2)通過 mysql 模塊連接到 MySQL 數據庫
(3)通過 mysql 模塊執(zhí)行 SQL 語句
2、安裝與配置 mysql 模塊
1、安裝 mysql 模塊
Mysql 模塊是托管于 npm
上的第三方模塊。它提供了在 Node.js 項目中連接和操作 MySQL 數據庫的能力。
想要在項目中使用它,需要先運行如下命令,將 mysql 安裝為項目的依賴包:
npm install mysql
如下:
2、配置 mysql 模塊
如下圖,我的MySQL 數據庫中有如下數據:
在使用 mysql 模塊操作 MySQL 數據庫之前,必須先對 mysql 模塊進行必要的配置,主要的配置步驟如下:
//導入模塊 const mysql = require('mysql') //建立與mysql數據庫的聯系 const db = mysql.createPool({ host:'127.0.0.1', //數據庫的IP地址 user:'root', //登錄數據庫的賬號 password:'******',//登錄數據庫的密碼 database:'bear2' //指定要操作哪個數據庫 })
3、測試 mysql 模塊能否正常工作
調用 db.query()
函數,指定要執(zhí)行的 SQL 語句,通過回調函數拿到執(zhí)行的結果:
//測試mysql能否正常工作 db.query('SELECT 1',(err,results)=>{ if(err) return console.log(err.message) //能夠成功的執(zhí)行SQL語句 console.log(results) })
測試結果為:
3、使用 mysql 模塊操作 MySQL 數據庫
1、查詢數據
查詢 student
表中所有的數據:
db.query('SELECT * FROM STUDENT',(err,results)=>{ //查詢失敗 if(err) return console.log(err.message) //查詢成功 console.log(results) })
結果為:
查詢成功,且得到的結果是一個數組。
2、插入數據
向 student
表中新增數據, 其中 cname
為 '小延'
,age
為 16
。示例代碼如下:
//要插入到student表中的數據對象 const student = {cname:'小延',age:16} //待執(zhí)行的SQL語句,其中英文的?表示占位符 const sqlStr = 'INSERT INTO student(cname,age)VALUES(?,?)' //使用數組的形式,依次為占位符指定具體的值 db.query(sqlStr,[student.cname,student.age],(err,results)=>{ if(err) return console.log(err.message) //失敗 if(results.affectedRows === 1){ console.log('插入成功') //成功 } })
結果為:
打開數據庫,查看數據,即:
數據插入成功。
3、插入數據的便捷方式
向表中新增數據時,如果數據對象的每個屬性和數據表的字段一一對應,則可以通過如下方式快速插入數據:
//要插入到student表中的數據對象 const student = {cid:9,cname:'小楊',age:18,class_id:1002} //待執(zhí)行的SQL語句,其中英文的?表示占位符 const sqlStr = 'INSERT INTO student SET ?' //直接將數據對象當做占位符的值 db.query(sqlStr,student,(err,results)=>{ if(err) return console.log(err.message) //失敗 if(results.affectedRows === 1) console.log('插入數據成功!') })
結果為:
打開數據庫,查看數據,即:
數據插入成功。
4、更新數據
可以通過如下方式,更新表中的數據:
//要更新的數據對象 const student = {cid: 8, cname: '小欣', age: 18, class_id: 1002} //要執(zhí)行的SQL語句 const sqlStr = 'UPDATE student SET cname=?,age=?,class_id=? WHERE cid=?' //調用db.query()執(zhí)行SQL語句的同時,使用數組依次為占位符指定具體的值 db.query(sqlStr,[student.cname,student.age,student.class_id],(err,results)=>{ if(err) return console.log(err.message) //失敗 if(results.affectedRows === 1) { console.log('更新數據成功!') } })
結果為:
打開數據庫,查看數據,即:
數據更新成功。
5、更新數據的便捷方式
更新表數據時,如果數據對象的每個屬性和數據表的字段一一對應,則可以通過如下方式快速更新表數據:
const student = {cid:1,cname:'小鈺',age:17,class_id:1003} //要執(zhí)行的SQL語句 const sqlStr = 'UPDATE student SET ? WHERE cid=?' 調用db.query()執(zhí)行SQL語句的同時,使用數組依次為占位符指定具體的值 db.query(sqlStr,[student,student.cid],(err,results)=>{ if(err) return console.log(err.message) //失敗 if(results.affectedRows === 1){ console.log('數據更新成功!') //成功 } })
結果為:
打開數據庫,查看數據,即:
數據更新成功。
6、刪除數據
在刪除數據時,最好根據 cid
這樣的唯一標識,來刪除對應的數據。示例如下:
//要執(zhí)行的SQL語句 const sqlStr = 'DELETE FROM student WHERE cid=?' //調用db.query()執(zhí)行sql語句的同時,為占位符指定確定的值 db.query(sqlStr,3,(err,results)=>{ if(err) return console.log(err.message) if(results.affectedRows === 1){ // 失敗 console.log('刪除數據成功!') //成功 } })
結果為:
打開數據庫,查看數據,即:
刪除數據成功。
需要注意的是:如果SQL語句有多個占位符,則必須為每個占位符指定具體的值,如果SQL語句只有一個占位符,則可以省略數組。
7、標記刪除
使用 DELETE
語句,會把真正的把數據從表中刪除掉。為了保險起見,推薦使用標記刪除的形式,來模擬刪除的動作。
所謂的標記刪除,就是在表中設置類似于 class_id
這樣的狀態(tài)字段,來標記當前這條數據是否被刪除。
當用戶執(zhí)行了刪除的動作時,我們并沒有執(zhí)行 DELETE
語句把數據刪除掉,而是執(zhí)行了 UPDATE
語句,將這條數據對應的class_id
字段標記為刪除即可。
//標記刪除:使用UPDATE語句代替DELETE語句;只更新數據的狀態(tài),并沒有真正刪除。 db.query('UPDATE student SET class_id=? WHERE cid=?',[1000,6],(err,results)=>{ if(err) return console.log(err.message) if(results.affectedRows === 1){ // 失敗 console.log('標記刪除成功!') //成功 } })
結果為:
打開數據庫,查看數據,即:
標記刪除成功。
以上就是Node.js如何在項目中操作MySQL的詳細內容,更多關于Node.js操作MySQL的資料請關注腳本之家其它相關文章!
相關文章
詳解nodejs中exports和module.exports的區(qū)別
本文主要介紹了exports 和 module.exports 的區(qū)別。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02