前面文章我们已经总结了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遍历显示。
mysql基本知识、基于Node.js应用的Express框架