MySQL数据库作为最流行的开源数据库。基本上是每个web开发者必须要掌握的数据库程序之一了。
基本使用
node.js上,最受欢迎的mysql包就是mysql模块。
npm install mysql
然后在js脚本里面直接引用进来
var mysql = require('mysql');
配置mysql的数据库连接。
var connection = mysql.createConnection({ host : 'ip', user : '用户名', password : '密码', database : 'dbname' }); connection.connect();
这样就拿到了一个连接。
然后就可以愉快的进行各种curd操作了。
node.js对数据库的curd都在query这个方法里面。这点和ado.net有很大的区别。
你的所有的操作,都从query的回调函数里面获得结果
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); });
连接池操作
在单机软件中,我们之间使用简单获得一个连接,然后就行了。
但是在面向互联网的web服务里面,频繁的创建和关闭连接,是很消耗服务器性能的。
于是我们的前辈们发明了各种池子。比如多线程操作中的线程池,游戏开发中的对象池,当然还包括数据库操作的连接池。
创建连接池:
var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 连接池数量, host : 'ip地址', user : '账号', password : '密码', database : '数据库名称' });
然后就是和上文一样的curd操作
//从连接池中获取一个连接 pool.getConnection(function(err, connection) { if (err) throw err; // not connected! // 使用这个连接curd connection.query('SELECT something FROM sometable', function (error, results, fields) { // 使用完之后,记得把这个连接放到连接池里面去 connection.release(); // Handle error after the release. if (error) throw error; }); });
如果你的程序要退出,请把调用连接池的end()方法。不然程序会卡在后台,一直退出失败。
封装成Promise
在ES6中,可以直接用和C#的await一样的语法去调用js的异步函数。
但是要求这个函数必须是async声明和返回值是Promise对象。
query = function (sql, arr, callback) { console.log('获取一个连接'); return new Promise(function (resolve, reject) { pool.getConnection(function (err, connection) { if (err) { reject(err);// not connected! } else { console.log('开始查询'); connection.query(sql, arr, function (error, results, fields) { connection.release(); console.log('连接已经释放,返回结果'); if (error) reject(error); // callback && callback(results, fields) resolve({ rows: results, fields: fields }) }); } }); }) }
简单的用法到这里就结束了。当然还有更高级的用法,比如MySQL的Cluster操作等。有兴趣的话,可以去研究,因为我目前用不到这种功能,所有就不往后去深究了。
以上就是node.js如何操作MySQL数据库的详细内容,更多关于node.js 操作数据库的资料请关注其它相关文章!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]