最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs進(jìn)階(6)—連接MySQL數(shù)據(jù)庫示例

 更新時間:2017年01月07日 16:01:29   作者:方帥  
本篇文章主要介紹了nodejs進(jìn)階(6)—連接MySQL數(shù)據(jù)庫示例,詳細(xì)的介紹了NodeJS操作MySQL數(shù)據(jù)庫,作為應(yīng)用最為廣泛的開源數(shù)據(jù)庫則成為我們的首選,有興趣的可以了解一下。

1. 建庫連庫

連接MySQL數(shù)據(jù)庫需要安裝支持

npm install mysql

我們需要提前安裝按mysql sever端

建一個數(shù)據(jù)庫mydb1

mysql> CREATE DATABASE mydb1;
mysql> SHOW DATABASES;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| mydb1       |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec) 

然后建一張表user如下

create table user( 
id int not null primary key auto_increment, 
name VARCHAR(100) not null, 
pwd VARCHAR(100) not null,
create_date TIMESTAMP NULL DEFAULT now()
)ENGINE=InnoDB DEFAULT CHARSET=utf8; 
CREATE UNIQUE INDEX t_quiz_IDX_0 on user(name); 

接下來我們利用nodejs連接mysql數(shù)據(jù)庫

var mysql = require('mysql'); //調(diào)用MySQL模塊
//創(chuàng)建一個connection 
var connection = mysql.createConnection({   
  host: 'localhost',    //主機(jī) 
  user: 'root',        //MySQL認(rèn)證用戶名 
  password: 'root',    //MySQL認(rèn)證用戶密碼 
  database: 'mydb1', 
  port: '3306'          //端口號 
});
//創(chuàng)建一個connection 
connection.connect(function(err){ 
  if(err){     
    console.log('[query] - :'+err); 
    return; 
  } 
  console.log('[connection connect] succeed!'); 
}); 
//----插入
var userAddSql = 'insert into user (name,pwd) values(?,?)';
var param = ['fff','123'];
connection.query(userAddSql,param,function(err,rs){
  if(err){
    console.log('insert err:',err.message);
    return;
  }
    console.log('insert success');
});
//執(zhí)行查詢 
connection.query('SELECT * from user where id=?',[2], function(err, rs) { 
  if (err) { 
    console.log('[query] - :'+err); 
    return; 
  } 
  for(var i=0;i<rs.length;i++){
    console.log('The solution is: ', rs[i].uname); 
  }
});  

//關(guān)閉connection 
connection.end(function(err){ 
  if(err){ 
    console.log(err.toString());
    return; 
  } 
  console.log('[connection end] succeed!'); 
});

但是實(shí)際每次創(chuàng)建連接都需要一定的開銷,執(zhí)行效率就會有影響。下面介紹一種連接池連mysql的方法:node-mysql

2. 連接池配置使用

node-mysql是目前最火的node下的mysql驅(qū)動,是mysqlpool的一個模塊。

下面的代碼是提供一個連接池,getPool函數(shù)返回createPool創(chuàng)建的數(shù)據(jù)庫連接池對象。 

var mysql = require('mysql'); //調(diào)用MySQL模塊 
function OptPool(){ 
  this.flag=true; //是否連接過 
  this.pool = mysql.createPool({   
    host: 'localhost',    //主機(jī) 
    user: 'root',        //MySQL認(rèn)證用戶名 
    password: 'root',    //MySQL認(rèn)證用戶密碼 
    database: 'test', 
    port: '3306'          //端口號 
  }); 
 
  this.getPool=function(){ 
     return this.pool; 
  } 
}; 
module.exports = OptPool;

下面的代碼展示如何使用這個連接池,插入和查詢的使用。需要注意的是conn.release(); //釋放一個連接放回連接池 需要再操作結(jié)束后再執(zhí)行,否則后面的數(shù)據(jù)庫操作會報(bào)錯。

var OptPool = require('./models/OptPool'); 
 
var optPool = new OptPool(); 
var pool = optPool.getPool(); 

//執(zhí)行SQL語句 
//從連接池中獲取一個連接
pool.getConnection(function(err,conn){ 
  //----插入 
  var userAddSql = 'insert into user (uname,pwd) values(?,?)'; 
  var param = ['eee','eee'];
  conn.query(userAddSql,param,function(err,rs){
    if(err){ 
      console.log('insert err:',err.message); 
      return; 
    } 
    console.log('insert success'); 
    //conn.release(); //放回連接池
  })
  //查詢 
  conn.query('SELECT * from user', function(err, rs) { 
    if (err) { 
      console.log('[query] - :'+err); 
      return; 
    }  
    for(var i=0;i<rs.length;i++){
      console.log(rs[i].uname); 
    }
    conn.release(); //放回連接池
  });
});

下面介紹一個復(fù)雜一點(diǎn)的增刪查改的數(shù)據(jù)庫操作,因相互之間有依賴,所以代碼可讀性就變得特別差。

var OptPool = require('./models/OptPool'); 
 
var optPool = new OptPool(); 
var pool = optPool.getPool(); 

var insertSQL = 'insert into table1(name,pwd) values("conan","123"),("fens.me","456")';
var selectSQL = 'select * from table1 limit 10';
var deleteSQL = 'delete from table1';
var updateSQL = 'update table1 set name="conan update" where name="conan"';

pool.getConnection(function(err,conn){ 
//delete
  conn.query(deleteSQL, function (err0, res0) {
    if (err0) console.log(err0);
    console.log("DELETE Return ==> ");
    console.log(res0);

    //insert
    conn.query(insertSQL, function (err1, res1) {
      if (err1) console.log(err1);
      console.log("INSERT Return ==> ");
      console.log(res1);

      //query
      conn.query(selectSQL, function (err2, rows) {
        if (err2) console.log(err2);

        console.log("SELECT ==> ");
        for (var i in rows) {
          console.log(rows[i]);
        }

        //update
        conn.query(updateSQL, function (err3, res3) {
          if (err3) console.log(err3);
          console.log("UPDATE Return ==> ");
          console.log(res3);

          //query
          conn.query(selectSQL, function (err4, rows2) {
            if (err4) console.log(err4);

            console.log("SELECT ==> ");
            for (var i in rows2) {
              console.log(rows2[i]);
            }
          });
        });
      });
    });
  });
})

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡單談?wù)勱P(guān)于 npm 5.0 的新坑

    簡單談?wù)勱P(guān)于 npm 5.0 的新坑

    最近使用到了npm5.0,第一次使用確實(shí)被驚艷了,但隨著而來的是一些坑,下面這篇文章主要給大家簡單介紹了關(guān)于npm 5的一些新坑,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-06-06
  • Nodejs基于LRU算法實(shí)現(xiàn)的緩存處理操作示例

    Nodejs基于LRU算法實(shí)現(xiàn)的緩存處理操作示例

    這篇文章主要介紹了Nodejs基于LRU算法實(shí)現(xiàn)的緩存處理操作,結(jié)合具體實(shí)例形式分析了LRU算法的原理、功能以及nodejs使用LRU算法實(shí)現(xiàn)緩存處理操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例

    nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例

    下面小編就為大家分享一篇nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)

    nest.js,egg.js,midway,express,koa的區(qū)別小結(jié)

    本文主要介紹了nest.js,egg.js,midway,express,koa的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Node.js之刪除文件夾(含遞歸刪除)代碼實(shí)例

    Node.js之刪除文件夾(含遞歸刪除)代碼實(shí)例

    這篇文章主要介紹了Node.js之刪除文件夾(含遞歸刪除)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Linux使用Node.js建立訪問靜態(tài)網(wǎng)頁的服務(wù)實(shí)例詳解

    Linux使用Node.js建立訪問靜態(tài)網(wǎng)頁的服務(wù)實(shí)例詳解

    這篇文章主要介紹了Linux使用Node.js建立訪問靜態(tài)網(wǎng)頁的服務(wù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Node.js應(yīng)用程序遇到了內(nèi)存溢出的問題解決方案

    Node.js應(yīng)用程序遇到了內(nèi)存溢出的問題解決方案

    文章介紹了Node.js應(yīng)用程序內(nèi)存溢出的原因,包括內(nèi)存泄漏、大型數(shù)據(jù)集處理、無限循環(huán)或遞歸、并發(fā)問題和外部內(nèi)存分配,文章還提供了優(yōu)化代碼、分批處理數(shù)據(jù)和增加內(nèi)存限制的解決方案,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Node.js實(shí)現(xiàn)批量去除BOM文件頭

    Node.js實(shí)現(xiàn)批量去除BOM文件頭

    這篇文章主要介紹了Node.js實(shí)現(xiàn)批量去除BOM文件頭,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-12-12
  • nodejs dgram模塊廣播+組播的實(shí)現(xiàn)示例

    nodejs dgram模塊廣播+組播的實(shí)現(xiàn)示例

    這篇文章主要介紹了nodejs dgram模塊廣播+組播的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • window系統(tǒng) nodejs安裝opencv環(huán)境配置圖文詳解

    window系統(tǒng) nodejs安裝opencv環(huán)境配置圖文詳解

    這篇文章主要介紹了window系統(tǒng) nodejs安裝opencv環(huán)境配置,結(jié)合圖文形式詳細(xì)分析了window環(huán)境下 nodejs安裝opencv的具體步驟、注意事項(xiàng)
    2023-04-04

最新評論

改则县| 西宁市| 广饶县| 金坛市| 潞西市| 秦安县| 平果县| 宝丰县| 稷山县| 云和县| 汤阴县| 汨罗市| 平果县| 老河口市| 西平县| 永吉县| 龙江县| 郧西县| 冕宁县| 治多县| 银川市| 格尔木市| 彭泽县| 古丈县| 肥西县| 汤原县| 临猗县| 罗源县| 霍林郭勒市| 湘潭县| 内黄县| 绍兴县| 宁晋县| 台湾省| 化州市| 平顶山市| 沈丘县| 广平县| 且末县| 唐河县| 镇平县|