zoukankan      html  css  js  c++  java
  • nodejs 中使用 mysql 实现 crud

    首先要使用 mysql 就必须要安装

    npm install mysql

    然后封装 sql 函数

    const mySql = require('mysql');
    
    let connection ;
    
    let insert, update, deletes, select;
    insert = update = deletes = select = (condition, callback) => {
     // insert into 表名(`name`,`age`) values('张三',12),('李四',13)
     // select * from 表名 where id=1 and name='张三'
     // update 表名 set name='张三' where id=1
     // delete from 表名 where id=1
      connection.query(condition, (err, data) => {
        if (err) throw err;
        callback && callback(data);
      });
    };
    
    // 或使用占位符的方式
    
    insert = (sql, values, callback) => {
    // 单条数据插入
      // sql:'insert into 表名 set ?'
      // values:{name: '张三', age:14}
      connection.query(sql, values, (err, data) => { 
        if (err) throw err; 
        callback && callback(data); 
      });
    
    // 多条数据插入
      // sql:'insert into 表名(`name`,`age`) values ?'
      // values:[['张三', 18],['李四', 19],['王五', 20]]
      connection.query(sql, [values], (err, data) => { 
        if (err) throw err; 
        callback && callback(data); 
      });
    }
    
    update = (sql, values, callback) => { 
    // 注意:mysql 没有批量 update 的方法,得使用循环来单个修改
    // 更新单条数据
      // sql:'update 表名 set name=?,age=? where id=?'
      // values:['张三', 14, 1]
      connection.query(sql, values, (err, data) => { 
        if (err) throw err;
        callback && callback(data);
      });
    // 更新全部数据
      // sql:'update 表名 set name=?'
      // values:['张三']
      connection.query(sql, values, (err, data) => {
        if(err) throw err;
        callback && callback(data);
      })
    };
    
    select = (sql, values, callback) => {  
    // 多条件查询
      // sql:'select * from 表名 where name = ? and age = ?'
      // 或 sql:'select * from 表名 where name = ? or age = ?'
      // values:['张三', 12]
      connection.query(sql, values, (err, data) => { 
        if (err) throw err; 
        callback && callback(data); 
      }); 
    // 同条件限定查询
      // sql:'select * from 表名 where id in (?)'
      // values:[1,2,3,4]
      connection.query(sql, [values], (err, data)=>{
        if(err) throw err;
        callback && callback(data)
      })
    
    };
    
    deletes = (sql, values, callback) =>{
    // 删除一条
      // sql:'delete from 表名 where id=?'
      // values:[1]
      connnection.query(sql, values, (err, data)=>{
        if(err) throw err;
        callback && callback(data);
      })
    
    // 删除多条
      // sql:'delete from 表名 where id in (?)'
      // values:[1,2,3]
    
      connection.query(sql, [values], (err, data) => {
        if(err) throw err;
        callback && callback(data)
      });
    };
    
    const connectionStart = callback => {
      connection = mySql.createConnection({
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'bms-test-back'
      });
      connection.connect(err => {
        if (err) return console.log('connectSql fail:' + err);
        callback && callback();
      });
    };
    
    const connectionEnd = () => connection.end();
    
    
    module.exports = {
      insert,
      update,
      deletes,
      select,
      connectionStart,
      connectionEnd
    }

    最后要在哪个 js 文件中使用,引入即可

  • 相关阅读:
    简单的jQuery无缝向上滚动效果
    http://yuanma.wxb0.com/ 唯品源码网站
    vue.js 2.0 --- 安装node环境,webpack和脚手架
    记住密码后,密码框Password会自动带出数据
    http://ask.dcloud.net.cn/question/11695 nativeUI的使用(移动的)
    微信内置浏览器 如何小窗不全屏播放视频?
    webstrom快捷键
    6个html5页面适配iphone6的技巧
    rem的js
    docker打包容器成镜像文件、镜像文件加载到镜像
  • 原文地址:https://www.cnblogs.com/xiaoyaoxingchen/p/11017336.html
Copyright © 2011-2022 走看看