前面文章我们已经总结了mysql下载安装配置启动以及如何用 Navicat 连接,还有MySQL的入门基础知识 、Node.js的基本知识、Express框架基于Node.js基础知识、下面我们总结如何在Node.js中使用MySQL数据库以及MySQL预处理基本知识。
目录
一、MySQL预处理
1.prepare 预处理名称 from "sql 语句";
prepare ppstmt from 'select * from student where id = ?';
2. 发送 sql 语句到 mysql 服务器;
3. mysql 服务器对 sql 语句进行解析-编译,但不执行;
4. 在客户端准备相关数据;
set @id = 2;
5.mysql 服务器对数据和预处理 sql 编译,然后执行该 sql 语句;
execute ppstmt using @id;
6.服务器将执行结果返回给客户端。
二、如何在Node.js中使用MySQL
1. 首先安装mysql2驱动程
npm install mysql2
2. 启动服务
PS D:\CODE\VSCODE\node\express> cd course //打开项目路径
PS D:\CODE\VSCODE\node\express\course> npm start //启动服务
3. 使用Node.js连接数据库
const mysql = require('mysql2')
// 在Node.js中连接数据库
const connection = mysql.createConnection({
host: 'localhost',
port: 3306,
user: 'root',
database: 'demo',
password:'zx123'
});
const statement = `select * from student2 where id = 1; `
connection.query(statement,(err,results,fields) => {
console.log(err,results,fields);
})
下图是我们成功连接数据库,并且根据我们的查询语句数据库返回的结果展示,query()回调函数中的三个值,err,results,fields分别是什么
- err数据是空,没有错误连接成功
- results 结果是对象数组[ { id: 1, name: '奇奇', gender: '男', age: 20 } ] ,
- fields 是数组
- [
`id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`gender` STRING(8) ENUM,
`age` TINYINT UNSIGNED NOT NULL
]
4. 使用数据库的连接池
通过重复使用之前的连接池,可以减少连接到mysql服务器的时间
const mysql = require('mysql2')
// 2.使用数据库的连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'demo',
password:'zx123',
waitForConnections: true,
connectionLimit: 10, //连接池中最多建立几个连接
queueLimit: 0
});
const statement = `select * from student2 where id = 1; `
pool.query(statement,(err,results) => {
console.log(err,results);
})
这里我们根据查询语句也是拿到了数据,并且打印了err 是null。
5. 使用Promise
const mysql = require('mysql2')
//3.使用Promise
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'demo',
password:'zx123',
waitForConnections: true,
connectionLimit: 10, //连接池中最多建立几个连接
queueLimit: 0
}).promise()
const statement = `select * from student2 where id = 3; `
pool.query(statement).then(results => {
console.log(results);
}).catch(err => {
console.log(err)
})
这里我们同样也是根据查询语句拿到了数据库返回的数据,并且成功打印在控制台。
6. 使用预处理语句
const mysql = require('mysql2')
// 4.使用预处理语句
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database: 'demo',
password:'zx123',
waitForConnections: true,
connectionLimit: 10, //连接池中最多建立几个连接
queueLimit: 0
}).promise()
const statement = `select * from student2 where id = ?; `
pool.execute(statement,[2]).then(results => {
console.log(results[0]);
}).catch(err => {
console.log(err)
})
这里我们可以看到已经成功连接数据库,并且根据我们查询语句返回了相应的数据,成功打印在控制台。
这里html文件中的数据不是上面的数据。我们前面写过数据如何在html页面展示。
我们前面写过拿到的数据如何在html遍历显示。
用Navicat工具的这篇文章一定要看!!!
MySQL的管理工具Navicat 安装 可长期使用呦!!!
mysql基本知识、基于Node.js应用的Express框架