node.js
操作mysql
通过mysql
这个包来操作mysql数据库
。
//步骤:
//项目上
npm init -y //项目初始化
npm i mysql //下载第三方模块
//文件中
const mqsql = require('mysql') //导入
const conn = mysql.createConnection() //创建连接对象
conn.connect() //连接mqsql数据库
conn.query('sql语句',(err,result)=>{处理}) //执行sql语句
项目初始化
npm init -y
项目初始化 ,生成package.json文件
安装
npm i mysql
mysql模块
是一个第三方模块,专门用来操作MySQL数据库。
参考:https://www.npmjs.com/package/mysql#introduction
使用步骤
要想用这个包连接数据库,首先要确保在电脑有mysql
(phpstudy 还要启动mysql服务)
一共需要4个步骤:
- 加载 MySQL 模块
- 创建 MySQL 连接对象
- 连接 MySQL 服务器
- 执行SQL语句
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost', // 你要连接的数据库服务器的地址
port : 3306,// 端口号
user : 'root', // 连接数据库服务器需要的用户名
password : 'root', // 连接数据库服务器需要的密码
database : 'gz61' //你要连接的数据库的名字
});
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
参考地址: https://www.npmjs.com/package/mysql#introduction
node操作mysql-查询操作
执行查询类型的SQL语句,查询结果(result
)是一个数组,每个单元是对象,对象的属性是数据表的字段名。
// 1. 加载mysql
const mysql = require('mysql');
// 2. 创建连接对象
const conn = mysql.createConnection({
// 对象的属性名字不能改变
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'gz61'
});
// 3. 连接到MySQL服务器
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
// 4. 执行SQL语句
let sql = 'select id,name,age from stu';
connection.query(sql, (err, result, fields) => {
if (err) throw err; // throw err 相当于 return console.log(err);
console.log(result); // result就是查询结果
});
node操作mysql-添加操作
执行添加类型的SQL语句,查询结果(result
)是一个对象,该对象中有两个属性要关注:
affectedRows
: 受影响行数insertID
: 查询数据的主键值
// 1. 加载mysql
const mysql = require('mysql');
// 2. 创建连接对象
const conn = mysql.createConnection({
// 对象的属性名字不能改变
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'gz61'
});
// 3. 连接到MySQL服务器
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
let sql = 'insert into users (name,password) values("小王","snv")'
connection.query(sql, (err, result) => {
if (result.affectedRows > 0) {
console.log('添加成功,新数据的id为:' + result.insertId);
} else {
console.log('添加失败');
}
});
node操作mysql-修改操作
执行修改类型的SQL语句,查询结果(result
)是一个对象,该对象中有 affectedRows
属性,表示本次修改操作影响到的行数。
// 1. 加载mysql
const mysql = require('mysql');
// 2. 创建连接对象
const conn = mysql.createConnection({
// 对象的属性名字不能改变
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'gz61'
});
// 3. 连接到MySQL服务器
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
// 更新
// update stu set 字段=值,字段=值 where id=11
let sql = 'update users set password="123" where name="小王"';
conn.query(sql, (err, result) => {
if (err) throw err;
if (result.affectedRows > 0) {
console.log('修改成功');
} else {
console.log('修改失败');
}
})
node操作mysql-删除操作
执行删除类型的SQL语句,查询结果(result
)是一个对象,该对象中有 affectedRows
属性
// 1. 加载mysql
const mysql = require('mysql');
// 2. 创建连接对象
const conn = mysql.createConnection({
// 对象的属性名字不能改变
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'gz61'
});
// 3. 连接到MySQL服务器
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
// 删除
let sql = 'delete from stu where id=1';
connection.query(sql,(err, result) => {
if (err) throw err;
if (result.affectedRows > 0) {
console.log('删除成功');
} else {
console.log('删除失败');
}
});
了解一下软删除
做删除 : delete from 表名 条件 会把数据直接从数据库中删除掉!
思路:
- 不是真的删除,而是设置一个特殊的字段表示当前的状态:正常还是已经删除
# 目标:把id=16的软删除掉
update stu set isDelete=1 where id=16`
模块化封装
分析上面几个单独的功能点,它们基本的语法格式是一致的,只是要执行的sql语句不同而已,所以,我们可以对它们进行一个简单的封装。然后再写测试文件对其进行测试。
涉及两个文件:
- sql.js
- sqltest.js
封装模块
模块名:sql.js
// 由于四项(insert,delete,update,select)操作只是sql语句不同
// 1. 加载mysql
const mysql = require('mysql');
// 2. 创建连接对象
const conn = mysql.createConnection({
// 对象的属性名字不能改变
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'gz61'
});
// 3. 连接到MySQL服务器
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
module.exports = connection
测试
sqltest.js
const conn = require('./sql');
conn.query('select * from users where username="小美1" and userpassword="666"', (err, data) => {
console.log(err);
console.log(data);
if (data.length > 0) {
console.log('用户名密码Ok');
} else {
console.log('用户名密码error');
}
});