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啊。

时间: 2024-12-24 07:15:28

node基础14:连接数据库的相关文章

[.net 面向对象编程基础] (14) 重构

[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然了,这也是从一个普通程序员到一个高级程序员的必由之路.就看病一样,普通医生只能治标,高级医生不但看好病,还能除病根. 1.什么时重构? 重构(Refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性.

Win10系列:C#应用控件基础14

ProgressBar控件 有时候用户需要执行比较复杂的任务,等待任务完成需要很长时间,在等待的过程中一般会使用进度条提示当前任务的执行进度,让用户更好的掌握任务的执行状态,例如在下载资源时会显示下载进度,发送文件时会显示发送进度等.使用ProgressBar控件能够在界面中为用户提供任务进度变化信息. ProgressBar控件分为确定进度条和不确定进度条两种进度显示样式.确定进度条通过从左到右用色块填充的方式表示一个较长操作的进度信息,而不确定进度条使用重复显示的动画证明任务仍在进行中. 在

OC基础(14)

Xcode设置 内存管理原则 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; pos

node基础(2)

NODE基础(周啸天2) NODE NODE 是一个以webkit(V8)引擎来渲染和解析JS的平台 在没有NODE之前,JS是一门基于客户端浏览器运行的脚本编程语言:JS是前端编程语言: 在有了NODE之后,JS也可以运行在NODE环境中了,我们可以把NODE安装在服务器端,这样我们就可以在服务器端执行JS,JS也可以处理服务器端的业务逻辑了:JS是后台编程语言: JS是全栈编程语言 JS运行在浏览器中,浏览器提供了很多内置的属性和方法(window全局对象):JS如果运行在NODE环境下,它

node基础(3)

NODE基础(周啸天3) NODE HTTP事物 HTTP传输的这件事,能称之为事物,说明这件事情比较的完整:Request + Response,只有请求和响应两个阶段都完成,才算HTTP事物完成 HTTP报文 1.客户端不仅可以向服务器发送请求,还可以把一些内容传递给服务器 2.服务器端也会把一些内容返回给客户端 客户端传递给服务器的内容以及服务器返回给客户端的内容统称为"HTTP报文":请求报文.响应报文 不管是请求还是响应报文,内容中都包含三部分: 起始行 : 请求起始行.响应

node基础知识(1)

NODE基础(周啸天1) NODE 1.常用DOS命令 WIN键+R键 -> cmd -> 打开DOS命令窗口 ipconfig 或者 ipconfig -all :查看本机电脑的IP地址.子网掩码.默认网关.DNS.物理地址(MAC地址)等信息 我们看到的IP地址属于局域网IP或者叫做内网IP,如果大家的子网掩码和默认网关相同,IP地址只有最后一组数据不一样(连接的是同一个路由器/WIFI) ,此时说明大家在同一个局域网内,我们可以通过IP互相访问 cls 清屏 exit 退出 D: 直接进

Java基础14:离开IDE,使用java和javac构建项目

Java基础14:离开IDE,使用java和javac构建项目 javac命令初窥 注:以下红色标记的参数在下文中有所讲解. 本部分参考https://www.cnblogs.com/xiazdong/p/3216220.html 用法: javac 其中, 可能的选项包括: -g 生成所有调试信息 -g:none 不生成任何调试信息 -g:{lines,vars,source} 只生成某些调试信息 -nowarn 不生成任何警告 -verbose 输出有关编译器正在执行的操作的消息 -depr

node基础应用

node基础应用 API art-templat express mongoDB 1.概念 1.Node.js 基于javascript开发,运行在服务端. 2.事件驱动.非阻塞I/O 3.基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 2.实操 2.1 安装 node node 官网 检查是否安装成功 node -v /--version 2.2 简单使用 1.node和浏览器一样可以执行js文件 cmd 打开命令窗口 在终端输入 ` node 文件名.

Node 基础 备注

1.1 Node简介 Node的异步I/O, 在Node中,可以从语言层面很自然的进行并行I/O操作,每个操作直接无需等待之前的I/O调用结束: 事件与回调函数: Node保持了JavaScript在浏览器中单线程的特点,而且在Node中,JavaScript与其余线程是无法共享热河状态的,单线程的最大好处是不用像多线程编程那样处处在意状态的同步问题,没有死锁的存在,也没有线程上下文交换所带来的性能上的开销: 1.2 模块 JavaScript先天缺乏一项功能: 模块:  javascript通