js mysql query_nodejs mysql query data
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相关推荐
- node mysql await_node.js中对 mysql 进行增删改查等操作和async,await处理
要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...
- node.js中对 mysql 进行增删改查等操作和async,await处理
要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...
- Node.js系列-----数据库MySQL
一.数据库MySQL 1.1. 为什么要使用数据库 任何的软件系统都需要存放大量的数据,这些数据通常是非常复杂和庞大的: 比如用户信息包括姓名.年龄.性别.地址.身份证号.出生日期等等: 比如商品信息 ...
- 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 ...
- mysql导入数据load data infile用法整理
有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. ...
- 【转贴】mysql导入数据load data infile用法
mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...
- 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: ...
- Lost connection to MySQL server during query的几种可能分析
在使用navicat导出查询结果时,发现一段时间后就断开连接了,报错:[Msg] [Exp] 2013 - Lost connection to MySQL server during query 开 ...
- 解决Lost connection to MySQL server during query错误方法
昨天使用Navicat for MySQL导入MySQL数据库的时候,出现了一个严重的错误,Lost connection to MySQL server during query,字面意思就是在查询 ...
最新文章
- 什么事情是你当了老板才知道的?
- PHP-开发环境搭建
- 如何将VMware ubuntu虚拟机磁盘增长改成自分配(未成功)
- 在js语法中使用jsx标签
- 学习SQLSERVER2005高可用性数据库镜像的一些心得
- java 精灵线程_Java线程的状态分析
- python json模块详解_深入解析Python编程中JSON模块的使用
- Kubeflow:连接云计算和机器学习的“桥梁”
- java ocx调用_Javascript调用OCX控件
- 最新红旗linux系统,国产系统红旗Linux下载
- 无法修改计算机时间权限,无法修改系统时间怎么办
- 网易云音乐:从刷屏 IP 到音乐生活王国
- 浪潮之巅—帝国的余晖ATT公司
- 电磁流体力学类毕业论文文献包含哪些?
- Fiddler中Response 的Raw乱码问题解决
- [C/C++] 1046 划拳(15 分)
- Opencv学习笔记 - 频域手段添加盲水印
- 《uni-app》一个非canvas的飞机对战小游戏实现-敌机模型实现
- 服务端如何推送消息给客户端?
- [数论] Miller_Rabbin算法判断大素数,Pollard_rho算法进行质因素分解