mysql 模块
2021年12月18日大约 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, [1,3], (err, results) => {
if (err) {
return console.log("错误信息:" + err.message);
}
if (results.affectedRows === 1) {
return console.log('标记删除成功')
}
});