本文是一篇使用 MySQL 这个 NPM 模块操作 MySQL 数据库的基础教程. 不涉及 MySQL 的安装和配置, 如果电脑中还未安装 MySQL, 推荐安装 WAMP,XAMPP 等集成环境.
转载: https://segmentfault.com/a/1190000016835736
初始化项目
创建项目目录, 并使用 NPM init 初始化项目后, 执行下面操作:
安装依赖
NPM install MySQL koa koa-router
创建 index.JS
- // index.JS
- const Koa = require('koa');
- const Router = require('koa-router');
- const MySQL = require('mysql');
- const App = new Koa();
- const router = new Router();
- const connection = MySQL.createConnection({
- host: 'localhost', // 填写你的 MySQL host
- user: 'root', // 填写你的 MySQL 用户名
- password: '123456' // 填写你的 MySQL 密码
- })
- connection.connect(err => {
- if(err) throw err;
- console.log('mysql connncted success!');
- })
- router.get('/', ctx => {
- ctx.body = 'Visit index';
- })
- App.use(router.routes());
- App.listen(3000);
在 shell 中执行 node index.JS, 当看到 shell 中打印出 MySQL connected success!, 表明 MySQL 数据库连接成功.
打开浏览器, 访问 localhost:3000, 当看到屏幕显示 Visit index 时, 表名项目初始化成功.
数据库操作
创建数据库
当访问 / createdb 时, 创建一个 mysqlkoa 的数据库, 代码如下:
- router.get('/createdb', ctx => {
- return new Promise(resolve => {
- const sql = `CREATE DATABASE mysqlkoa`;
- connection.query(sql, (err) => {
- if (err) throw err;
- ctx.body = {
- code: 200,
- msg: `create database mysqlkoa success!`
- }
- resolve();
- });
- })
- })// 欢迎加入全栈开发交流群一起学习交流: 864305860
重新执行 node index.JS, 并使用浏览器访问 localhost:3000/createdb
创建数据表
为了方便, 我们直接在连接时使用刚才创建的数据库, 需要在 MySQL.createConnection 中添加 database:mysqlkoa 的配置项.
- const connection = MySQL.createConnection({
- host: 'localhost',
- user: 'root',
- password: '123456',
- database: 'mysqlkoa' // 添加该列
- })
当访问 / createtable 时, 我们创建一个数据表 fe_frame, 该表用来保存前端框架的数据:
- router.get('/createtable', ctx => {
- return new Promise(resolve => {
- const sql = `CREATE TABLE fe_frame(
- id INT(11) AUTO_INCREMENT PRIMARY KEY,
- name VARCHAR(255),
- author VARCHAR(255)
- )`;
- connection.query(sql, (err ,results, filelds) => {
- if (err) throw err;
- ctx.body = {
- code: 200,
- msg: `create table of fe_frame success!`
- }
- resolve();
- })
- })
- })
重新执行 node index.JS, 并使用浏览器访问 localhost:3000/createtable
插入数据
插入单条数据
当访问 / insert 时, 用来插入单条数据:
- router.get('/insert', ctx => {
- return new Promise(resolve => {
- const sql = `INSERT INTO fe_frame(name, author)
- VALUES('vue', 'Evan')`;
- connection.query(sql, (err) => {
- if (err) throw err;
- ctx.body = {
- cde: 200,
- msg: `insert data to fe_frame success!`
- }
- resolve();
- })
- })
}) 给大家推荐一个免费的学习群, 里面概括移动应用网站开发, CSS,html,webpack,vue node angular 以及面试资源等.
对 Web 开发技术感兴趣的同学, 欢迎加入 Q 群: 864305860, 不管你是小白还是大牛我都欢迎, 还有大牛整理的一套高效率学习路线和教程与您免费分享, 同时每天更新视频资料.
最后, 祝大家早日学有所成, 拿到满意 offer, 快速升职加薪, 走上人生巅峰.
重新执行 node index.JS, 并使用浏览器访问 localhost:3000/insert
插入多条数据
当访问 / insertmulti 时, 用来插入多条数据:
- router.get('/insertmulti', ctx => {
- return new Promise(resolve => {
- const sql = `INSERT INTO fe_frame(name, author)
- VALUES ?`;
- const values = [
- ['React', 'Facebook'],
- ['Angular', 'Google'],
- ['jQuery', 'John Resig']
- ];
- connection.query(sql, [values], (err, result) => {
- if (err) throw err;
- ctx.body = {
- code: 200,
- msg: `insert ${result.affectedRows} data to fe_frame success!`
- }
- resolve();
- })
- })
- })
重新执行 node index.JS, 并使用浏览器访问 localhost:3000/insertmulti
使用 phpMyAdmin 访问, 可以看到此时 mysqlkoa 表如下
删除数据
当访问 / delete 时, 删除相应行. 我们使用请求参数 name 来指定删除哪个框架, 在服务器端使用 ctx.query.name 获取, 代码如下:
- router.get('/delete', ctx => {
- return new Promise(resolve => {
- const name = ctx.query.name;
- const sql = `DELETE FROM fe_frame WHERE name = '${name}'`;
- connection.query(sql, (err, result) => {
- if (err) throw err;
- ctx.body = {
- code: 200,
- msg: `delete ${result.affectedRows} data from fe_frame success!`
- };
- resolve();
- })
- })
- })// 欢迎加入全栈开发交流群一起学习交流: 864305860
重新执行 node index.JS, 并使用浏览器访问 http://localhost:3000/delete?name=jQuery
修改数据
当访问 / update 时, 更新 vue 框架的作者名为 Evan You, 代码如下:
- router.get('/update', ctx => {
- return new Promise(resolve => {
- const sql = `UPDATE fe_frame SET author = 'Evan You' WHERE NAME = 'vue'`;
- connection.query(sql, (err, result) => {
- if (err) throw err;
- ctx.body = {
- code: 200,
- msg: `update ${result.affectedRows} data from fe_frame success!`
- };
- resolve();
- })
- })
- })// 欢迎加入全栈开发交流群一起学习交流: 864305860
重新执行 node index.JS, 并使用浏览器访问 http://localhost:3000/update
查找数据
当访问 / select 时, 获取满足请求参数中框架名条件的项, 代码如下:
- router.get('/select', ctx => {
- return new Promise(resolve => {
- let name = ctx.query.name;
- const sql = `SELECT * FROM fe_frame WHERE name = '${name}'`;
- connection.query(sql, (err, result) => {
- if (err) throw err;
- ctx.body = {
- code: 200,
- data: result
- }
- resolve();
- })
- })
- })
重新执行 node index.JS, 并使用浏览器访问 http://localhost:3000/select?name=vue
来源: http://www.qdfuns.com/article/51117/9fe561be07a5866091804e9085e9a89f.html