NodeJS下引用mysql进行增删查改
NodeJS下要使用mySql需要安装mysql依赖,输入命令行:npm install mysql --save NodeJS中连接mysql数据库的简单方法我所知道的有createConnection(Object)方法和创建连接池 createPool(Object),这两个方法的参数相同,都接受一个对象作为参数,该对象有五个常用的属性host,port,user,password,database。与php中链接数据库的参数相同。属性列表如下:
host: 连接数据库所在的主机名. (默认: localhost)
port: 连接端口. (默认: 3306)
localAddress: 用于TCP连接的IP地址. (可选)
socketPath: 链接到unix域的路径。在使用host和port时该参数会被忽略.
user: MySQL用户的用户名.
password: MySQL用户的密码.
database: 链接到的数据库名称 (可选).
charset: 连接的字符集. (默认: 'UTF8_GENERAL_CI'.设置该值要使用大写!)
timezone: 储存本地时间的时区. (默认: 'local')
stringifyObjects: 是否序列化对象. See issue #501. (默认: 'false')
insecureAuth: 是否允许旧的身份验证方法连接到数据库实例. (默认: false)
typeCast: 确定是否讲column值转换为本地JavaScript类型列值. (默认: true)
queryFormat: 自定义的查询语句格式化函数.
supportBigNumbers: 数据库处理大数字(长整型和含小数),时应该启用 (默认: false).
bigNumberStrings: 启用 supportBigNumbers和bigNumberStrings 并强制这些数字以字符串的方式返回(默认: false).
dateStrings: 强制日期类型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date对象返回. (默认: false)
debug: 是否开启调试. (默认: false)
multipleStatements: 是否允许在一个query中传递多个查询语句. (Default: false)
flags: 链接标志.
还可以使用字符串连接数据库例如:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');
这里我着重说下创建连接池 createPool(Object)连接数据库的方法:
开发中我们通常喜欢把连接数据库需要的属性写到一个配置文件里,然后作为createPool的参数传进去,如下图:
我们把数据库的操作写到一块儿,用的时候直接调用就好了,数据库操作代码如下:
const mysql=require('mysql');
let client=undefined;
exports.connect=function(sqlConfig){
client=mysql.createPool(sqlConfig);
};
const query=function(sql,cb){
client.getConnection(function(err,connection){
if(err)
{
console.log("connection Error"+JSON.stringify(err));
cb(err);
throw err;
}else{
connection.query(sql,function(conErr,result,fields){
if(conErr){
console.log('connection.query error');
cb(conErr);
}else{
cb(null,result);
}
connection.release();
});
}
});
};
exports.checkPlayer=function(key,cb)
{
let sql='select * from playertable where uniqueID='+key;
query(sql,function(err,data){
if(err){
console.log('query cb Error='+err);
}
cb(err,data);
});
};
exports.insertPlayer=function(map,cb)
{
let sql='insert into playertable values('+
map._uniqueID+','+
map._countID+",'"+
map._nickName+"',"+
map._houseCount+",'"+
map._avatarUrl+"'"+
')';
query(sql,function(err,data){
if(err){
console.log('insert cb Error='+err);
}
cb(err,data);
});
};
接着看调用部分代码:
const mysql=require('./mysqlHelper');
const mysqlConfig=require('./mysqlConfig.json');
mysql.connect(mysqlConfig.Config);
mysql.checkPlayer('200',function(err,data){
if(err){
console.log("CheckPlayer Err="+err);
} else{
console.log("check Result="+JSON.stringify(data));
}
});
mysql.insertPlayer({
_uniqueID:23,
_countID:24,
_nickName:"CBerKing",
_houseCount:5,
_avatarUrl:"https://avatar.csdn.net/2/B/4/1_cjb_king.jpg"
},function(err,data){
if(err){
console.log('insert player Err='+err);
}else{
console.log("insert result Sucess="+JSON.stringify(data));
}
});
总结:1.使用npm install mysql --save命令加载mysql依赖
2.引用:const mysql=require('mysql');
3.创建连接池返回连接对象:let client=mysql.createPool(mysqlConfig);
4.通过连接对象执行回调:
client.getConnection(function(err,connection){})
5.通过回调得到的connection执行sql语句:
connection.query(sql,function(conErr,result,fields){})