前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS下连接mysql操作(增删查改)

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

作者头像
bering
发布2019-12-03 14:49:55
1.8K0
发布2019-12-03 14:49:55
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

NodeJS下引用mysql进行增删查改

NodeJS下要使用mySql需要安装mysql依赖,输入命令行:npm install mysql --save NodeJS中连接mysql数据库的简单方法我所知道的有createConnection(Object)方法和创建连接池 createPool(Object),这两个方法的参数相同,都接受一个对象作为参数,该对象有五个常用的属性host,port,user,password,database。与php中链接数据库的参数相同。属性列表如下:

代码语言:javascript
复制
    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: 链接标志.

还可以使用字符串连接数据库例如:

代码语言:javascript
复制
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');

这里我着重说下创建连接池 createPool(Object)连接数据库的方法:

开发中我们通常喜欢把连接数据库需要的属性写到一个配置文件里,然后作为createPool的参数传进去,如下图:

我们把数据库的操作写到一块儿,用的时候直接调用就好了,数据库操作代码如下:

代码语言:javascript
复制
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);
    });
};

接着看调用部分代码:

代码语言:javascript
复制
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.通过连接对象执行回调:

代码语言:javascript
复制
client.getConnection(function(err,connection){})

5.通过回调得到的connection执行sql语句:

代码语言:javascript
复制
connection.query(sql,function(conErr,result,fields){})
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档