一、node操作mysql数据库

1) 安装mysql 模块

​npm i mysql

​node操作数据库需要四个步骤:

// 1 配置连接参数,创建连接

let connection = mysql.createConnection({

host:"localhost",

user:"root",

password:"",

database:"ujiuye"

})

// 2 调用 connect() 尝试连接数据库

connection.connect((err)=>{

if(err){

console.log( "连接失败:"+ err.stack );

return;

}

console.log("连接成功"+ connection.threadId );

})

// 3 执行CRUD 操作

// 查询操作

connection.query("select * from 班级",[],(err,results,fields)=>{

// console.log( results);

for(let item of results){

console.log(`班号:${item.班号},班主任:${item.班主任},班长:${item.班长}`);

}

})

// 4 关闭数据库连接,释放资源

connection.end();

2)注意, select 操作,成功后返回一个查询结果组成的json。

connection.query("select * from 班级",[],(err,results,fields)=>{

// console.log( results);

for(let item of results){

console.log(`班号:${item.班号},班主任:${item.班主任},班长:${item.班长}`);

}

})

3) 插入,修改、删除等操作结果 会返回一个对象:

OkPacket {

fieldCount: 0,

affectedRows: 1,

insertId: 18,

serverStatus: 2,

warningCount: 0,

message: '',

protocol41: true,

changedRows: 0

}

注意,如果参数错误,sql语句可能会成功执行,不会报错,但实际没有实现用户想要的删除效果。因此最好判断 对象中的affectedRows 如果大于0,才能确定确实执行了删除操作。

二、mysql执行数据操作的封装类db.js

1) 封装类的骨架

let mysql = require("mysql");

class Db{

constructor(){

}

// 返回一个链接对象,以备query()使用

initConn(){

}

// 执行数据库的CRUD操作

query(){

}

// 关闭连接,释放资源

close(){

}

}

let db = new Db();

module.exports = db;

2) 将外部配置属性作为模块导入

let mysql = require("mysql");

let dbconfig = require("./dbconfig");

class Db{

constructor({host="localhost",user="root",password="",prot=3306,database=""}){

this.options={

host,

user,

password,

database

}

}

// 返回一个链接对象,以备query()使用

initConn(){

}

// 执行数据库的CRUD操作

query(){

}

// 关闭连接,释放资源

close(){

}

}

let db = new Db(dbconfig);

module.exports = db;

3) 实现query( )方法,因为外部使用时想使用async...await ,因此 query()需要返回一个promise对象

let mysql = require("mysql");

let dbconfig = require("./dbconfig");

class Db{

constructor({host="localhost",user="root",password="",prot=3306,database=""}){

this.options={

host,

user,

password,

database

}

}

// 返回一个链接对象,以备query()使用

initConn(){

}

// 执行数据库的CRUD操作

query(){

this.connection = await this.initConn();

return new Promise((resolve,reject)=>{

this.connection.query(sql,arr,(err,result)=>{

if(!err){

resolve( result)

}else{

reject(err);

}

})

})

}

// 关闭连接,释放资源

close(){

}

}

let db = new Db(dbconfig);

module.exports = db;

4) query方法需要 connection对象, 而 connect() 又是一个异步,因此再次封装到promise中

let mysql = require("mysql");

let dbconfig = require("./dbconfig");

class Db{

constructor({host="localhost",user="root",password="",prot=3306,database=""}){

this.options={

host,

user,

password,

database

}

}

// 返回一个链接对象,以备query()使用

initConn(){

let conn = mysql.createConnection( this.options );

return new Promise((resolve,reject)=>{

conn.connect((err)=>{

if(!err){

resolve( conn )

}else{

reject(err)

}

})

})

}

// 执行数据库的CRUD操作

query(){

this.connection = await this.initConn();

return new Promise((resolve,reject)=>{

this.connection.query(sql,arr,(err,result)=>{

if(!err){

resolve( result)

}else{

reject(err);

}

})

})

}

// 关闭连接,释放资源

close(){

}

}

let db = new Db(dbconfig);

module.exports = db;

5) 实现close()方法。最终的代码:

let mysql = require("mysql");

let dbconfig = require("./dbconfig");

class Db{

constructor({host="localhost",user="root",password="",prot=3306,database=""}){

this.options={

host,

user,

password,

database

};

this.connection = null;

}

// 返回一个链接对象,以备query()使用

initConn(){

let conn = mysql.createConnection( this.options );

return new Promise((resolve,reject)=>{

conn.connect((err)=>{

if(!err){

resolve( conn )

}else{

reject(err)

}

})

})

}

// 执行数据库的CRUD操作

async query(sql,arr=[]){

this.connection = await this.initConn();

return new Promise((resolve,reject)=>{

this.connection.query(sql,arr,(err,result)=>{

if(!err){

resolve( result)

}else{

reject(err);

}

})

})

}

// 关闭连接,释放资源

close(){

this.connection.end();

}

}

let db = new Db(dbconfig);

module.exports = db;

serverlet 连接mysql_node node链接mysql mysql执行操作的封装类相关推荐

  1. hive 把mysql语句执行_R分别连接mysql hive执行操作

    大半年忘记更新工作记录了,惭愧,慢慢补上. mysql/hive 是两类常用的不同类型的数据库,在数据操作上存在一定的区别. 1-MYSQL的连接. ​library(DBI) library(RMy ...

  2. lua mysql 事务_Lua 操作数据库(MySQL)

    Lua 操作数据库(MySQL) 对于简单的数据操作,我们可以使用文件,但是,有时这些文件操作可能效率不高.可扩展性和功能不够强大.为此,我们通常会切换到数据库.LuaSQL提供从Lua到数据库管理系 ...

  3. ubyntu 链接mysql_ubuntu mysql远程连接

    ubuntu mysql远程连接 http://blog.csdn.net/helen_shw/archive/2010/01/22/5224524.aspxkiki@kiki-desktop:/et ...

  4. LAMP/LNMP环境下:phpinfo php连接mysql php执行mysql查询 测试代码及响应

    1.测试php环境搭建完成: <?phpphpinfo();?> =========================== 2.测试php连接mysql数据成功: <?php$mysq ...

  5. DBeaver连接mysql数据库执行.sql脚本,Windows

    DBeaver连接mysql数据库执行.sql脚本,Windows操作系统 (1)首先需要DBeaver连接mysql成功. 启动mysql, mysqld --console 打开DBeaver连接 ...

  6. node 链接MySql数据库并 进行增删改查

    在Navicat中创建数据库创建表 那么就开始吧! 一.链接数据库 mysql - npmA node.js driver for mysql. It is written in JavaScript ...

  7. ubyntu 链接mysql_ubuntu mysql 的安装、配置、简单使用,navicat 连接

    MySQL 的安装 1. 先更新 apt 安装中心: apt update 里面会有默认最新的mysql 的包. 2.安装msyql : sudo apt-get install mysql-serv ...

  8. mysql 中的左连接,右链接和内连接

    左连接,右链接和内连接 在自己做项目的过程中,遇到了相关的数据库的查询的问题,在这里做一下简短的记录和总结 其中左连接和右链接属于外连接: 左连接: left (outer) join 右链接: ri ...

  9. mysql远程连接10061_navicat 远程链接数据库报错10061,1130解决

    在windows上安装了navicat后想要链接到ubuntu的数据库,结果一直报错10061. 解决办法如下: 1.首先确保关闭防火墙. 2.然后在ubuntu中找到mysql的配置文件,在这里 / ...

最新文章

  1. MFC List Control 控件添加单元格编辑,实现可编辑重写
  2. JAVA——System.in作为控制台输入时结束输入(输入EOF)解决方案
  3. MarkdownPad 汉化破解(含下载地址)
  4. Bzoj 2127 happiness 最小割
  5. 每天进步一点点017
  6. 关于Arduino 步进电机Stepper库的一些想法
  7. Tapioca:linux上同gtalk语音通信
  8. 2018年php框架,2018年的7个热门网站开发框架
  9. Cameralink多功能接口转换模块
  10. 阿里发布的Redis开发文档,涵盖了所有的redis操作
  11. MIS系统(1)- MIS系统的介绍
  12. 实验二 概念模型ER图
  13. 命名空间又称名字空间,英文名:Namespace
  14. 一种有手就行的物联网平台的多终端接入方法
  15. 汽车结构嵌件市场现状及未来发展趋势
  16. ZL50轮胎式装载机液压系统设计(设计说明书+CAD图纸+开题报告+外文翻译)
  17. Matlab绘制95%置信区间图
  18. 分析URL中关键字(从阿江统计偷的)
  19. Protobuf序列化原理
  20. IDEA 全局替换 增加前缀 后缀

热门文章

  1. CentOS7虚拟机节点搭建教程
  2. 原创 | 一文回顾近二十年数据科学领域的里程碑事件或突破性技术
  3. 五种典型的递推关系——一步一步算法篇
  4. 小学数学与计算机整合课优质教案,小学数学与信息技术整合教案
  5. 网络安全学习笔记——第五天 防火墙功能特性
  6. 基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】
  7. Spock代码讲解 - mock第三方依赖、if else 分支测试
  8. Pytorch搭建GoogLeNet网络(奥特曼分类)
  9. 碳纤维机器keywords
  10. CDOJ 763 树上的鸟儿(水题/模拟题)