跳至主要內容

mysql 模块

望间代码Node.js大约 2 分钟

mysql 模块

npm 上的第三方模块,用于在 node.js 项目中操作 MySQL 数据库

使用

导入

const mysql = require("mysql");

建立连接

const db = mysql.createPool({
  host: "", // 数据库ip地址
  port: "3306", // 端口
  user: "", // 数据库用户名
  password: "", // 数据库密码
  database: "", // 数据库名
});

操作数据库

查询

const sqlStr = "select * from users"; // sql代码
db.query(sqlStr, (err, results) => {
  if (err) {
    return console.log("错误信息:" + err.message);
  }
  return results;
});

SQL 是查询语句,results 是一个数组,里面是数据库返回的查询结果

插入

const newUser = { username: "zs", password: "123456" };
const sqlStr = "insert into users (username, password) values (?, ?)";
db.query(sqlStr, [newUser.username, newUser.password], (err, results) => {
  if (err) {
    return console.log("错误信息:" + err.message);
  }
  if (results.affectedRows === 1) {
    return console.log("数据插入成功");
  }
});

在执行的 SQL 语句中,可以使用 '?' 占位

SQL 是插入语句,results 是一个对象,results.affectedRows是数据库改变行数


const newUser = { username: "zs", password: "123456" };
const sqlStr = "insert into tableName set ?";
db.query(sqlStr, newUser, (err, results) => {
  if (err) {
    return console.log("错误信息:" + err.message);
  }
  if (results.affectedRows === 1) {
    return console.log("数据插入成功");
  }
});

如果数据对象中的属性与数据表字段一一对应,就可以使用上面这种写法

更新

const newUser = { uid: "1", username: "zs", password: "123456" };
const sqlStr = "update users set username=?, password=? where uid=?";
db.query(
  sqlStr,
  [newUser.username, newUser.password, newUser.uid],
  (err, results) => {
    if (err) {
      return console.log("错误信息:" + err.message);
    }
    if (results.affectedRows === 1) {
      return console.log("数据更新成功");
    }
  }
);

const newUser = { uid: "1", username: "zs", password: "123456" };
const sqlStr = "update users set ? where uid=?";
db.query(sqlStr, [newUser, newUser.uid], (err, results) => {
  if (err) {
    return console.log("错误信息:" + err.message);
  }
  if (results.affectedRows === 1) {
    return console.log("数据更新成功");
  }
});

如果数据对象中的属性与数据表字段一一对应,就可以使用上面这种写法

删除

推荐根据 id 来删除数据

const sqlStr = "delete from users where uid=?";
db.query(sqlStr, 1, (err, results) => {
  if (err) {
    return console.log("错误信息:" + err.message);
  }
  if (results.affectedRows === 1) {
    return console.log("删除数据成功");
  }
});

只有一个占位符时,可以省略数组

标记删除

设计一个 status 状态码字段,来标记这条数据是否被删除

const sqlStr = 'update users set status=? where uid=?';
db.query(sqlStr, [13], (err, results) => {
  if (err) {
    return console.log("错误信息:" + err.message);
  }
  if (results.affectedRows === 1) {
      return console.log('标记删除成功')
  }
});
上次编辑于:
贡献者: ViewRoom