mysql 浮点型详解 简书_mysql模块详解

mysql是Nodejs下比较有名的一个MySQL操作模块。

下面是一个简单的创建mysql数据库的连接

var conn = mysql.createConnection({

host: settings.host,

user: settings.user,

password: settings.password,

database: settings.database,

port: settings.port

});

conn.connect();

然后可以通过conn来执行查询操作

var sql = 'select * from test';

conn.query(sql, function(err, rows) {

if (err) throw err;

console.log(rows);

});

也可以执行更新和插入操作

sql = 'insert into ?test(name) value ("张三")';

conn.query(sql, [table,name] ,function(err, info) {

if (err) throw err;

console.log(info.affectedRows);

console.log(info.insertId);

});

这里的affectedRows是操作后表受影响的行数,可以用来判断是否更新或操作成功

insertId可以得到插入记录的自增ID

最后需要关闭连接

conn.end();

如果网络问题或者MySQL服务器重启或者超过一段时间没操作,MySQL会主动断开连接,这是需要监听这个事件,重新连接数据库

function handleDisconnect() {

conn = mysql.createConnection({

host: settings.host,

user: settings.user,

password: settings.password,

database: settings.database,

port: settings.port

});

conn.connect(function(err) {

if (err) {

console.log('连接数据库出错:' + err);

setTimeout(handleDisconnect, 2000);

}

});

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

console.log('出错:'+err);

if(err.code == 'PROTOCOL_CONNECTION_LOST'){

handleDisconnect();

}else{

throw err;

}

});

}

handleDisconnect();

为了防止遭受SQL注入攻击,可以对标识符和字符串进行转义操作

var colunms = ['id','name'];

var sql = 'select ?? from test';

conn.query(sql,[colunms], function(err, rows) {

if (err) throw err;

console.log(rows);

});

var name = '李四';

var table = 'test';

sql = 'insert into ??(name) value ("?")';

conn.query(sql, [table,name] ,function(err, info) {

if (err) throw err;

console.log(info.affectedRows);

console.log(info.insertId);

});

标识符用 ?? 或者 mysql.escapeID()

字符串用 ? 或者conn.escape()

实际应用中,往往需要同时发起多个数据库查询,如果只建立一个数据库连接,那查询就会进入等待队列,所以需要一个连接池来管理多个数据库的连接

var pool = mysql.createPool({

host: settings.host,

user: settings.user,

password: settings.password,

database: settings.database,

port: settings.port,

connectionLimit: 10

});

pool.getConnection(function(err,connection){

if(err) throw err;

// connection 为当前一个可用的数据库连接

});

connectionLimit 最大连接数,默认为10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值