1.安装mysql模块

2.新建sql.js,并写上以下代码
varmysql=require('mysql');varconnection=mysql.createConnection({host: 'localhost',user: 'wscats',password: '123456789',database: 'asm'});connection.connect();//连接数据库connection.query('select * from news',function(err,rows,fields){if(err)throwerr;console.log('The news is: ',rows[0]);});//执行SQL语句connection.end();//关闭连接。连接基本参数
| 参数 | 用法 |
|---|
| host | 主机名,localhost代表本地 |
| user | Mysql用户 |
| password | 密码 |
| database | 连接的数据库 |
由于我本地数据库名叫asm,操作表为news,取第一列数据

3.执行文件
执行sql.js,显示结果如图

注意如果我们要在每一次查询数据库后connection.end()关闭一次连接,那我们需要用mysql.createConnection()创建一个新的connection,也就是每一次的开关都是用唯一一个connection来实现
varconnection;functioncreateConnection(){connection=mysql.createConnection({host: 'localhost',user: 'laoxie',password: '12345678',database: 'asm'});}4.增删查改分页
注意sql语句不要写错语法
//增加记录connection.query('insert into news (title ,text) values ("wscats" , "eno")');//删除记录connection.query('delete from news where title = "wscats"');// 修改记录connection.query('update news set text = "eno" where title = "wscats"');//查找记录connection.query('select * from news',function(err,rows,fields){if(err)throwerr;console.log('The news is: ',rows[0]);});//查询记录vararr=[];connection.query("select * from news",functionselectTable(err,rows,fields){if(err){throwerr;}if(rows){for(vari=0;i<rows.length;i++){console.log("第"+i+"条","id: "+rows[i].id,"title: "+rows[i].title,"text: "+rows[i].text);//把数据组装成数组对象varobj={};obj.id=rows[i].id;obj.title=rows[i].title;obj.text=rows[i].text;arr.push(obj);}}console.log(arr);});//查询记录connection.query('select * from news where id = 2',function(err,rows,fields){if(err)throwerr;console.log('The news is: ',rows[0]);});//分页//取前5条数据select*fromtablelimit0,5//orselect*fromtablelimit5//取第11条到第15条数据,共5条select*fromtablelimit10,5//格式select*fromtablelimitoffset,rowsoffset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)
5.封装成模块
最后我们可以把它封装成一个模块导出,在其他主模块中调用
注意我在每个原型链的函数结尾处都会调用一个connection.end()方法,这个方法connection.connect()对应,一个开始,一个结束
配合await和async的封装具体可以参考这里
functioncurd(){varmysql=require('mysql');this.connection=mysql.createConnection({host: 'localhost',user: 'wscats',password: '123456789',database: 'asm'});//开始链接数据库this.connection.connect();}curd.prototype.insert=function(){//增加记录this.connection.query('insert into news (title ,text) values ("wscats" , "eno")');//结束链接this.connection.end();}curd.prototype.update=function(){// 修改记录this.connection.query('update news set text = "eno" where title = "wscats"');}curd.prototype.where=function(){this.connection.query('select * from news where id = 2',function(err,rows,fields){if(err)throwerr;console.log('The news is: ',rows[0]);});//结束链接this.connection.end();}curd.prototype.delete=function(){//删除记录this.connection.query('delete from news where title = "wscats"');}curd.prototype.find=function(){//查询记录vararr=[];this.connection.query("select * from news",function(err,rows,fields){if(err){throwerr;}if(rows){for(vari=0;i<rows.length;i++){console.log("第"+i+"条","id: "+rows[i].id,"title: "+rows[i].title,"text: "+rows[i].text);//把数据组装成数组对象varobj={};obj.id=rows[i].id;obj.title=rows[i].title;obj.text=rows[i].text;arr.push(obj);}}console.log(arr);});this.connection.end();}curd.prototype.find2=function(//查找记录this.connection.query('select * from news',function(err,rows,fields){if(err)throwerr;console.log('The news is: ',rows[0]);});)vardb=newcurd();exports.db=db;//执行//db.insert()//外部引用方法//var db = require('./sql');//db.db.where();6.断线重连
因为mysql连接时间长的话会自动断掉,可以封装一个断线重连的接口
constmysql=require("mysql");functioncreateConnection(){letconnection=mysql.createConnection({// 域名host: 'localhost',// 用户名user: 'wscats',// 密码password: '12345678',// 数据库database: 'corrine'});//连接错误,2秒重试connection.connect((err)=>{if(err){console.log('error when connecting to db:',err);setTimeout(createConnection,2000);}});connection.on('error',function(err){console.log('db error',err);// 如果是连接断开,自动重新连接if(err.code==='PROTOCOL_CONNECTION_LOST'){createConnection();}else{throwerr;}});returnconnection}module.exports=createConnection();7.自动断线
建议用下面这一段来实现mysql的自动连接和自动断开,那就不会出现too many connections的错误提醒了
varquery=function(sql,params,callback){varconnection=mysql.createConnection({// 域名host: 'localhost',// 用户名user: 'wscats',// 密码password: '12345678',// 数据库database: 'corrine'});//连接错误,2秒重试 connection.connect(function(err){if(err){console.log("error when connecting to db:",err);setTimeout(query,2000);}else{varq=connection.query(sql,params,function(error,results,fields){//关闭连接 connection.end();//事件驱动回调 callback(error,results,fields);});console.log("sql:::"+q.sql);}});connection.on("error",function(err){console.log("db error",err);// 如果是连接断开,自动重新连接 if(err.code==="PROTOCOL_CONNECTION_LOST"){query();}else{throwerr;}});}参考文档
1.安装mysql模块
2.新建sql.js,并写上以下代码
连接基本参数
由于我本地数据库名叫asm,操作表为news,取第一列数据

3.执行文件
执行sql.js,显示结果如图
注意如果我们要在每一次查询数据库后
connection.end()关闭一次连接,那我们需要用mysql.createConnection()创建一个新的connection,也就是每一次的开关都是用唯一一个connection来实现4.增删查改分页
注意sql语句不要写错语法
5.封装成模块
最后我们可以把它封装成一个模块导出,在其他主模块中调用
注意我在每个原型链的函数结尾处都会调用一个
connection.end()方法,这个方法connection.connect()对应,一个开始,一个结束配合await和async的封装具体可以参考这里
6.断线重连
因为mysql连接时间长的话会自动断掉,可以封装一个断线重连的接口
7.自动断线
建议用下面这一段来实现mysql的自动连接和自动断开,那就不会出现too many connections的错误提醒了
参考文档