Node.js学习笔记(十)#数据库操作

目录

一、安装mysql模块

二、导入并配置mysql

三、数据库crud操作

1.插入操作

2.查询操作

3.更新操作

4.删除操作

①物理删除

②逻辑删除(推荐)


一、安装mysql模块

npm i mysql

二、导入并配置mysql

const mysql = require('mysql')
const db = mysql.createPool({
  host:'127.0.0.1', //数据库ip地址
  user:'root',      //数据库账号
  password:'123456',//数据库密码
  database:'test_01'//数据库名称  
})

db.getConnection(function (err, connection) {
  if (err) {
    throw new Error(err.message);
  } else {
    console.log("建立连接成功");
    console.log(db._allConnections.length); //  1
    connection.query("select 1", function (err, results) {
      if(err) throw new Error(err.message) //失败返回错误信息
      console.log(results) // 成功返回[ RowDataPacket { '1': 1 } ]
      connection.destory(); // 当一个连接不再需要使用且需要从连接池中移除时,用connection对象的destroy方法
      console.log(db._allConnections.length); // 0
    });
  }
  db.end(); // 当一个连接池不再需要使用时,用连接池对象的end方法关闭连接池
});

配置参数:

host

主机地址 (默认:localhost)

user

用户名

password

密码

port

端口号 (默认:3306)

database

数据库名

charset

连接字符集(默认:'UTF8_GENERAL_CI',注意字符集的字母都要大写)

localAddress

此IP用于TCP连接(可选)

socketPath

连接到unix域路径,当使用 host 和 port 时会被忽略

timezone

时区(默认:'local')

connectTimeout

连接超时(默认:不限制;单位:毫秒)

stringifyObjects

是否序列化对象

typeCast

是否将列值转化为本地JavaScript类型值 (默认:true)

queryFormat

自定义query语句格式化方法

supportBigNumbers

数据库支持bigint或decimal类型列时,需要设此option为true (默认:false)

bigNumberStrings

supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false)

dateStrings

强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScript Date类型(默认:false)

debug

开启调试(默认:false)

multipleStatements

是否许一个query中有多个MySQL语句 (默认:false)

flags

用于修改连接标志

ssl

使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件

三、数据库crud操作

1.插入操作

const param = { name: "zhangsan", gender: "男", age: "20" };
const sqlStr = "insert into user (name,gender,age) values (?,?,?)";
db.query(sqlStr, [param.name, param.gender, param.age], (err, res) => {
  if (err) throw new Error(err.message);
  if (res.affectedRows == 1) {
    console.log("插入成功");
  }
});

2.查询操作

const param = {name:"zhangsan"}
const sqlStr = "select * from user where name = ?";
db.query(sqlStr, [param.name], (err, res) => {
    if (err) throw new Error(err.message);
    if (res) {
      console.log(res);
      //[ RowDataPacket { id: 1, name: 'zhangsan', gender: '男', age: '20' } ]
    }
});

3.更新操作

const param = { name: "lisi", age: "23", id: 1 };
const sqlStr = "update user set name = ?,age = ? where id = ?";
db.query(sqlStr, [param.name, param.age, param.id], (err, res) => {
  if (err) throw new Error(err.message);
  if (res.affectedRows == 1) {
    console.log("更新成功");
  }
});

4.删除操作

①物理删除

const param = { id: 1 };
const delSql = 'delete from user where id = ?';
db.query(delSql, [param.id], (err, res) => {
  if (err) throw new Error(err.message);
  if (res.affectedRows == 1) {
    console.log("删除成功");
  }
});

②逻辑删除(推荐)

const param = { status: 0 ,id: 1 };
const delSql = 'update user set status = ? where id = ?';
db.query(delSql, [param.status,param.id], (err, res) => {
  if (err) throw new Error(err.message);
  if (res.affectedRows == 1) {
    console.log("删除成功");
  }
});

猜你喜欢

转载自blog.csdn.net/weixin_42214717/article/details/128458620