node基础14:连接数据库

Posted 花雨伞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node基础14:连接数据库相关的知识,希望对你有一定的参考价值。

1.连接数据库

node本身没有连接数据库的功能,需要安装一些中间库来支持。本节,我讲学习连接mysql

首先需要安装mysql,需要去mysql官网下载mysql,并安装。也需要安装一个mysql可视化管理工具,这个也可以在mysql官网下载。

第一步:

去官网下载好mysql,并且安装。如果是mac os 系统,必须记下localhost服务器的初始密码(截图),安装好了之后,新建一个database,这时候提醒你,需要更改初始密码。更改初始密码之后,你才可以进行mysql指令的操作。

第二步:

第三步:

/**
 * Created by gaoxiong on 2017/1/7.
 */
var mysql = require(\'mysql\');
//create a connect object
var connection = mysql.createConnection({
    host:\'localhost\',
    user:\'root\',
    password:\'12345678\',
    database:\'school\',
    port:\'3306\'
});

//connect database
connection.connect(function(err){
    if(err){
        console.log(\'connect-\'+err);
        return;
    }
    console.log(\'connected successful\');
});

var userAddSql = \'insert into user (uname, password) values(?, ?)\';
var param = [\'gaoxiong\', \'123456\'];
connection.query(userAddSql, param, function(err, result){
    if(err){
        console.log(\'query\',err.message);
        return;
    } else {
        console.log(\'insert sucessful\');
    }
})

connection.query(\'select * from user\', function(err,result,fields){
    if(err){
        console.log(\'err\',err.message);
    }else {
        console.log(result[0]);
        console.log(fields);//内容比较多
    }
})

// close connect
connection.end(function(err){
    if(err){
        console.log(\' close connect-\'+err);
        return;
    }
    console.log(\'close successful\');
});

以上就完成连接数据库,并且插入一条数据的功能。需要注意的是数据库查询的语句都是异步的。以上连接的方法叫做 直接连接,非常消耗内存。

2.连接池连接

先理解概念,何为连接池连接:通俗的理解,一开始就建立了很多条连接(这些连接组成了一个连接池),当你需要需要的时候,取出一条连接线,在这条连接线使用完成之后,将其释放,这条连接线就会回到连接池中。

这种连接池连接也是前辈造好的轮子(中间库),名字叫做 node-mysql,需要全局安装。

npm install -g node-mysql

代码如下:

/**
 * mysqlPool.js
 * Created by gaoxiong on 2017/1/7.
 */
var mysql = require(\'mysql\');
function optPool() {
    this.isConnected = true;
    this.pool = mysql.createPool({
        host:\'localhost\',
        user:\'root\',
        password:\'12345678\',
        database:\'school\',
        port:\'3306\'
    });
    this.getPool = function(){
        if (this.isConnected){
            this.pool.on(\'connection\', function(connection){
                connection.query(\'SET SESSION auto_increment_increment = 1\');
                this.isConnected = false;
            })
        }
        return this.pool;
    };
}

module.exports = optPool;
/**
 * pool.js
 * Created by gaoxiong on 2017/1/7.
 */
var OptPool = require(\'./mysqlPool\');

//创建连接池
var optPool = new OptPool();
var pool = optPool.getPool();

//从连接池中获取一个连接
pool.getConnection(function(err, conn){
    console.log(\' begin insert\');
    var userAddSql = \' insert into user (uname, password) values(?,?)\';
    var prama = [\'gaoxiong\',\'123456\'];
    conn.query(userAddSql, prama, function(err,res) {// 异步操作了
        if(err){
            console.log(err);
            return;
        } else {
            console.log(res);
            console.log(\'insert successful\');
        };
    });
    console.log(\'insert end\');
    console.log(\'begin select \')
    conn.query(\' select * from user \', function(err,res) {// 异步操作了
        if(err){
            console.log(err);
            return;
        } else {
            console.log(res[0]);
        };
        conn.release();//放回连接池
    });
    console.log(\'select over\');
});

在终端中执行:node pool.js 就可以看到效果了,哈哈哈哈啊哈哈。nice啊。

以上是关于node基础14:连接数据库的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

零基础手把手教你用Node搭建服务器并连接MongoDB数据库

零基础手把手教你用Node搭建服务器并连接MongoDB数据库

node.js mysql 池 beginTransaction & 连接