@yellowhouse
2016-09-25T23:17:02.000000Z
字数 1822
阅读 1066
数据库
node-mysql 是一个node.js与mysql连接常用的插件,有了它就可以方便的进行交互。用JavaScript编写的,不需要编译,完全遵循MIT许可协议。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
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();//使用end()关闭连接,可以使用回调函数,返回错误提示,或connection.destroy();
连接参数
在建立新连接时,可以设置以下参数:
host:连接的数据库地址。(默认:localhost)
port:连接地址对应的端口。(默认:3306)
localAddress: 源IP地址使用TCP连接。(可选)
socketPath:当主机和端口参数被忽略的时候,可以填写一个Unix的Socket地址。
user: mysql的连接用户名。
password: 对应用户的密码。
database: 所需要连接的数据库的名称。(可选)
charset: 连接的编码形式。这就是mysql中的整理。(例如:utf8_general_ci)如果被指定,则作为默认的整理排序规则。(默认:utf8_general_ci)
timezone:用来保存当前本地的时区。(默认:local)
connectTimeout: 设置在连接的时候,超过多久以后未响应则返回失败。(默认:10000)
还有其他参数可以查询官网
连接池
使用连接池连接可以更容易地共享某个连接,也可以管理多个连接。调用connection.release()方法使连接返回到连接池,以便其他人可以再次使用。如果你想关闭连接并从连接池中删除它,就要使用connection.destroy()方法。在下次需要时连接池会再创建一个新的连接。
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'example.org',
user : 'bob',
password : 'secret',
database : 'my_db'
});
pool.getConnection(function(err, connection) {
// connected! (unless `err` is set)
});
关闭时要全部关闭
连接池事件
连接池里面创建了一个新连接时,会触发一个连接事件。如需要在使用此连接之前设置会话变量,将要对此事件进行监听。
队列中等待可用连接的回调函数被触发时,连接池将触发此事件。
pool.on('enqueue', function () {
console.log('Waiting for available connection slot');
});
执行查询
最基本的执行查询的方法是在一个对象中调用 .query()函数 (比如一个连接或应用池实例)。
最简单的 .query()形式是 .query(sqlString, callback),第一个参数是一条SQL字符串,第二个参数是回调:
connection.query('SELECT * FROM books
WHERE author
= "David"',
function (error, results, fields) {
…………
});
第二个.query()形式是 .query(sqlString, values, callback),带有值的占位符 (查看转义查询值):
第三种 .query()形式是 .query(options, callback),在查询时带有大量的高级可选项
预查询
你可以使用 mysql.format 来创建一个多插入点的查询语句,对id和值可以使用适当的转义处理 。
var sql = "SELECT * FROM ?? WHERE ?? = ?";
var inserts = ['users', 'id', userId];
sql = mysql.format(sql, inserts);