1、express操作數據庫
1.1、安裝mysql模塊
cnpm i mysql --save
1.2、連接mysql數據庫
本地先安裝好mysql,這裏就不再贅述mysql數據庫的安裝過程了。在mysql數據庫中創建名爲 stusystem
的數據庫,創建 stu
表,在表中隨意添加兩條數據。
創建 mysql.js 文件:
const mysql = require('mysql')
// 創建mysql連接
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect();
const sql = "select * from stu"; // 執行查詢語句
connection.query(sql,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result)
connection.destroy(); // 釋放資源
})
執行 mysql.js 文件:
node mysql
在控制檯打印的結果:
[
RowDataPacket { id: 1, name: '張三', age: 20, sex: '男' },
RowDataPacket { id: 2, name: '李四', age: 21, sex: '男' }
]
1.3、增刪改查方法
(1)新增數據
在 mysql.config.js 文件中編寫添加數據的代碼:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect(); // 建立連接
const sql = "insert into stu(stuname,age,sex) values(?,?,?)" //SQL語句
const sqlParams = ["小明",22,"男"] // 動態參數
connection.query(sql,sqlParams,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result); // 打印添加結果
})
connection.end() // 關閉連接
運行 mysql.config.js 文件
node mysql.config
運行結果:
查看數據庫:
(2)修改數據
代碼:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect();
const sql = "update stu set stuname=?,age=?,sex=? where sid=?"
const sqlParams = ["韓梅梅",18,"女",3]
connection.query(sql,sqlParams,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result);
})
connection.end()
運行結果:
查看數據庫:
(3)刪除數據
代碼:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect();
const sql = "delete from stu where sid=?"
const sqlParams = [3]
connection.query(sql,sqlParams,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result);
})
connection.end()
運行結果:
(4)查詢所有數據
代碼:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect();
const sql = "select * from stu";
connection.query(sql,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result);
})
connection.end()
運行結果:
(5)根據條件查詢數據
代碼:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect();
const sql = "select * from stu where stuname=?";
const sqlParams = ["張三"]
connection.query(sql,sqlParams,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result);
})
connection.end()
運行結果:
(6)多表查詢
先創建2張表,分別添加如下數據:
學生表 stu
年級表 grade
代碼:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
connection.connect();
const sql = "select * from stu,grade where stu.gid = grade.gid";
connection.query(sql,(err,result)=>{
if(err) {
console.log(err);
return
}
console.log(result);
})
connection.end()
運行結果:
1.4、客戶端發起請求操作數據庫(以查詢爲例)
在 routes 目錄創建路由文件 stu.js,代碼如下:
let express = require('express')
let router = express.Router()
let mysql = require('mysql')
let conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'stusystem'
})
router.get("/query",(req,res,next)=>{
conn.connect();
let sql = "select * from stu,grade where stu.gid=grade.gid";
conn.query(sql,(err,result)=>{
if(err){
res.json({
code: 500,
msg: "SQL執行錯誤",
err
})
}else{
res.json({
code: 200,
msg: "查詢成功",
data: result
})
}
conn.destroy();
})
})
module.exports = router
在 app.js 入口文件中配置路由信息,代碼如下:
let stuRouter = require('./routes/stu');
app.use('/stu',stuRouter);
執行 npm start
啓動服務,使用 postman 測試get請求 http://127.0.0.1:3000/stu/query
。
結果如下: