NodeJS下连接mysql操作(增删查改)

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){})

猜你喜欢

转载自blog.csdn.net/cjb_king/article/details/79912814
今日推荐