node学习(4)node操作数据库

170 阅读2分钟

node连接MySQL数据库

安装mysql模块

npm init -y //记录安装模块

npm i mysql //安装

使用

// 导入mysql模块
const mysql = require('mysql')
// 建立与数据库连接
const db = mysql.createPool({
    host: '127.0.0.1',  //数据库ip
    user: 'root',   //数据库账号
    password: 'password',  //数据库密码
    database: 'my_db_01',   //指定要操作的数据库
})

// 检测是否连接成功

db.query('select * from users', (err, results) => {

    if (err) return console.log(err.message);
    // 查询成功结果
    console.log(results)
    // 打印的results
    // [
    //     RowDataPacket { id: 1, username: 'zs', password: '123', status: 0 },
    //     RowDataPacket { id: 2, username: 'ls', password: '456', status: 0 }
    //   ]
})



// 导入mysql模块
const mysql = require('mysql')
// 建立与数据库连接
const db = mysql.createPool({
    host: '127.0.0.1',  //数据库ip
    user: 'root',   //数据库账号
    password: 'password',  //数据库密码
    database: 'my_db_01',   //指定要操作的数据库
})



// 向数据库插入数据
// 要插入的数据
// const user = { username: 'node_add', password: 'node123' }
// // 要执行的sql  ?占位符
// const sqlStr = "INSERT INTO users (username,password) VALUES (?,?)"
// // 执行
// db.query(sqlStr, [user.username, user.password], (err, results) => {
//     // 失败
//     if (err) return console.log(err.message);
//     // 成功结果
//     if (results.affectedRows === 1) {
//         console.log('成功!', results)
//     }

// })

// 简便写法

const user = { username: 'node_add2', password: '2node123' }
// 要执行的sql  ?占位符
const sqlStr = "INSERT INTO users SET ?"
// 执行
db.query(sqlStr, user, (err, results) => {
    // 失败
    if (err) return console.log(err.message);
    // 成功结果
    if (results.affectedRows === 1) {
        console.log('成功!')
    }

})


// 导入mysql模块
const mysql = require('mysql')
// 建立与数据库连接
const db = mysql.createPool({
    host: '127.0.0.1',  //数据库ip
    user: 'root',   //数据库账号
    password: 'password',  //数据库密码
    database: 'my_db_01',   //指定要操作的数据库
})

// 修改id为4的数据
// const user = { id: 4, username: 'node_change', password: 'node2' }
// // 要执行的sql  ?占位符
// const sqlStr = "UPDATE users SET username=?,password=? WHERE id=?"
// // 执行
// db.query(sqlStr, [user.username, user.password, user.id], (err, results) => {
//     // 失败
//     if (err) return console.log(err.message);
//     // 成功结果
//     if (results.affectedRows === 1) {
//         console.log('成功!')
//     }

// })


// 简写
    const user = { id: 4, username: 'aaa', password: 'node2' }
    // 要执行的sql  ?占位符
    const sqlStr = "UPDATE users SET ? WHERE id=?"
    // 执行
    db.query(sqlStr, [user, user.id], (err, results) => {
        // 失败
        if (err) return console.log(err.message);
        // 成功结果
        if (results.affectedRows === 1) {
            console.log('成功!')
        }

    })
    })

删(慎用,delete为彻底删除!!!!)

// 导入mysql模块
const mysql = require('mysql')
// 建立与数据库连接
const db = mysql.createPool({
    host: '127.0.0.1',  //数据库ip
    user: 'root',   //数据库账号
    password: 'password',  //数据库密码
    database: 'my_db_01',   //指定要操作的数据库
})
// 删除

const sqlStr = "DELETE FROM users WHERE id=?"
// 多个占位符用数组,一个直接写
db.query(sqlStr, 4, (err, results) => {
    // 失败
    if (err) return console.log(err.message);
    // 成功结果
    if (results.affectedRows === 1) {
        console.log('删除成功!')
    }

})

标记删除(防止用户误删重要数据,删除最好全部模拟删除)

模拟删除的动作,可以在数据库设置一个status字段来标记删除,用户执行删除实际上是在 数据库update修改status的状态
const sqlStr = "UPDATE users SET status=? WHERE id=?"
// 执行
db.query(sqlStr, [1, 3], (err, results) => {
    // 失败
    if (err) return console.log(err.message);
    // 成功结果
    if (results.affectedRows === 1) {
        console.log('成功!')
    }

})