1、安装nodejs

2、安装mysql  npm包

地址:https://github.com/felixge/node-mysql

npm

install mysql

3、相应API查看及调用:

var

mysql = require('mysql');

var

connection = mysql.createConnection({

host : 'localhost',

user : 'me',

password : 'secret'

});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function(err,

rows, fields) {

if (err) throw err;

console.log('The solution is: ',

rows[0].solution);

});

connection.end();

4、相关注意点及方法

将相应结果进行文件形式保存,使用fs文件系统及path路径模块

var $ =

require('underscore');

var fs =

require('fs');

var path =

require('path');

underscore为数据处理集合,可以简单快捷的进行数据的遍历拼接等处理

npm

install underscore

connection.query('select * from xmmember', function (err, rows) {//account 用户账户表

if

(err) throw err;

var

tempAccount = $.map(rows, function (c) {

return {

id: c.ID,

name: c.m_username,

password: c.m_userpass,

surePassword: c.m_userpass,

qq: c.qq

}

});

fs.writeFile(path.join(__dirname, 'account.js'),

JSON.stringify(tempAccount), function (err) {

if (err) throw err;

console.log("Export Account Success!");

});

});

将数据查询结果进行JSON格式转换后,导出到具体文件中,方便相应的系统进行导入等管理操作。

相关API方法:

1、配置query格式,进行相应update的操作,代码如下:

connection.config.queryFormat = function (query, values)

{

if (!values) return query;

return query.replace(/\:(\w+)/g,

function (txt, key) {

if

(values.hasOwnProperty(key)) {

return this.escape(values[key]);

}

return txt;

}.bind(this));

};

connection.query("UPDATE posts SET title = :title", {

title: "Hello MySQL" });

2、执行insert操作。如下:

connection.query('INSERT INTO posts SET ?', {title:

'test'}, function(err, result) {

if (err) throw err;

console.log(result.insertId);

});

3、删除delete的执行,示例代码以下:

connection.query('DELETE FROM posts WHERE title = "wrong"',

function (err, result) {

if (err) throw err;

console.log('deleted ' +

result.affectedRows + ' rows');

})

4、大量数据查询及操作时候,可以加入相应的容错处理:示例代码如下:

var query

= connection.query('SELECT * FROM posts');

query

.on('error', function(err) {

//

Handle error, an 'end' event will be emitted after this as

well

})

.on('fields', function(fields)

{

//

the field packets for the rows to follow

})

.on('result', function(row) {

//

Pausing the connnection is useful if your processing involves

I/O

connection.pause();

processRow(row, function() {

connection.resume();

});

})

.on('end', function() {

//

all rows have been received

});

其中,err为具体出现错误时候,所需要进行的错误处理。

fields为具体的执行的结果集合

row为具体结果集每行的处理,可暂停执行及恢复执行。

5、多个查询的同时执行处理,示例代码如下:

先进行如下配置:

var

connection = mysql.createConnection({multipleStatements:

true});

即可进行多个语句的执行,写法如下:

connection.query('SELECT 1; SELECT 2', function(err,

results) {

if (err) throw err;

// `results` is an array with one

element for every statement in the query:

console.log(results[0]); // [{1:

1}]

console.log(results[1]); // [{2:

2}]

});

6、结果进行组装处理,代码如下:

var

options = {sql: '...', nestTables: true};

connection.query(options, function(err, results)

{

});

或使用如下方式:

var

options = {sql: '...', nestTables: '_'};

connection.query(options, function(err, results)

{

});

7、事物的执行及处理。代码如下:

connection.beginTransaction(function(err) {

if (err) { throw err; }

connection.query('INSERT INTO posts SET

title=?', title, function(err, result) {

if

(err) {

connection.rollback(function() {

throw err;

});

}

var

log = 'Post ' + result.insertId + ' added';

connection.query('INSERT INTO log SET data=?', log, function(err,

result) {

if (err) {

connection.rollback(function() {

throw err;

});

}

connection.commit(function(err) {

if (err) {

connection.rollback(function() {

throw err;

});

}

console.log('success!');

});

});

});

});

beginTransaction(), commit() and rollback()

三个方法分别针对SQL事物的开始执行,提交,回滚三个操作。

8、执行超时的捕捉处理,示例代码如下:

connection.query({sql: 'SELECT COUNT(*) AS count FROM

big_table', timeout: 60000}, function (err, rows) {

if (err && err.code ===

'PROTOCOL_SEQUENCE_TIMEOUT') {

throw new Error('too long to count table rows!');

}

if (err) {

throw err;

}

console.log(rows[0].count + '

rows');

});

9、同时可以对SQL错误代码的处理,示例代码如下:

var

connection = require('mysql').createConnection({

port: 84943, // WRONG PORT

});

connection.connect(function(err) {

console.log(err.code); //

'ECONNREFUSED'

console.log(err.fatal); //

true

});

connection.query('SELECT 1', function(err) {

console.log(err.code); //

'ECONNREFUSED'

console.log(err.fatal); //

true

});

最后,node mySQL提供强大的数据池群处理,以及SSL加密验证功能,在此不做说明,可查看具体API。

js mysql query_nodejs mysql query data相关推荐

  1. node mysql await_node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  2. node.js中对 mysql 进行增删改查等操作和async,await处理

    要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...

  3. Node.js系列-----数据库MySQL

    一.数据库MySQL 1.1. 为什么要使用数据库 任何的软件系统都需要存放大量的数据,这些数据通常是非常复杂和庞大的: 比如用户信息包括姓名.年龄.性别.地址.身份证号.出生日期等等: 比如商品信息 ...

  4. Node.js+Express+Vue+MySQL+axios的项目搭建

    1 基本搭建 创建vue项目之前需要先安装Node.js和MySQL数据库 1.1 vue脚手架安装 npm i vue -g npm i @vue/cli -g//初始化vue项目 vue crea ...

  5. mysql导入数据load data infile用法整理

    有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. ...

  6. 【转贴】mysql导入数据load data infile用法

    mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...

  7. mysql的sererdata_MySQL_win2008 R2服务器下修改MySQL 5.5数据库data目录的方法,说明: 操作系统:Windows Server - phpStudy...

    win2008 R2服务器下修改MySQL 5.5数据库data目录的方法 说明: 操作系统:Windows Server 2008 R2 MySQL版本:5.5.25a MySQL程序安装目录:D: ...

  8. Lost connection to MySQL server during query的几种可能分析

    在使用navicat导出查询结果时,发现一段时间后就断开连接了,报错:[Msg] [Exp] 2013 - Lost connection to MySQL server during query 开 ...

  9. 解决Lost connection to MySQL server during query错误方法

    昨天使用Navicat for MySQL导入MySQL数据库的时候,出现了一个严重的错误,Lost connection to MySQL server during query,字面意思就是在查询 ...

最新文章

  1. 什么事情是你当了老板才知道的?
  2. PHP-开发环境搭建
  3. 如何将VMware ubuntu虚拟机磁盘增长改成自分配(未成功)
  4. 在js语法中使用jsx标签
  5. 学习SQLSERVER2005高可用性数据库镜像的一些心得
  6. java 精灵线程_Java线程的状态分析
  7. python json模块详解_深入解析Python编程中JSON模块的使用
  8. Kubeflow:连接云计算和机器学习的“桥梁”
  9. java ocx调用_Javascript调用OCX控件
  10. 最新红旗linux系统,国产系统红旗Linux下载
  11. 无法修改计算机时间权限,无法修改系统时间怎么办
  12. 网易云音乐:从刷屏 IP 到音乐生活王国
  13. 浪潮之巅—帝国的余晖ATT公司
  14. 电磁流体力学类毕业论文文献包含哪些?
  15. Fiddler中Response 的Raw乱码问题解决
  16. [C/C++] 1046 划拳(15 分)
  17. Opencv学习笔记 - 频域手段添加盲水印
  18. 《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现
  19. 服务端如何推送消息给客户端?
  20. [数论] Miller_Rabbin算法判断大素数,Pollard_rho算法进行质因素分解

热门文章

  1. 机器人自动化打磨优势
  2. 如何在一个声卡添加pa codec设备
  3. 皮肤管理项目—2021款氢氧小气泡
  4. 微商快手怎么去引流?如何获取到我们的粉丝?
  5. UE4在windows下打包IOS(虚拟机)
  6. 基于小根堆实现的定时器
  7. 鸡蛋从外向内打破是煎蛋,从里面打破飞出来的是?
  8. MongoDB查询条件 lt lte gt gte
  9. CobaltStrike使用-第四篇(鱼叉钓鱼攻击-细思极恐)
  10. N个图片的轮回显示j2me