You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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的错误提醒了
参考文档
The text was updated successfully, but these errors were encountered: