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

NodeJS連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作詳解

 更新時(shí)間:2024年02月22日 16:09:44   作者:挖掘機(jī)小王子  
本篇是使用NodeJS的模塊MySQL操作MySQL數(shù)據(jù)庫(kù)的基礎(chǔ)教程,連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作詳解,需要的朋友可以參考下

驅(qū)動(dòng)安裝

npm install mysql

連接數(shù)據(jù)庫(kù)

在以下實(shí)例中根據(jù)你的實(shí)際配置修改數(shù)據(jù)庫(kù)用戶名、及密碼及數(shù)據(jù)庫(kù)名:

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'gov'
});

connection.connect(); // 連接數(shù)據(jù)庫(kù)

connection.query('select * from gov_policy', function (error, results, fields) {
    if (error) throw error;
 console.log('The results is: ', results);
 console.log(fields);
});
connection.end() // 關(guān)閉連接

數(shù)據(jù)庫(kù)連接參數(shù)說(shuō)明

參數(shù)描述
host主機(jī)地址 (默認(rèn):localhost)
user用戶名
password密碼
port端口號(hào) (默認(rèn):3306)
database數(shù)據(jù)庫(kù)名
charset連接字符集(默認(rèn):'UTF8_GENERAL_CI',注意字符集的字母都要大寫(xiě))
localAddress此IP用于TCP連接(可選)
socketPath連接到unix域路徑,當(dāng)使用 host 和 port 時(shí)會(huì)被忽略
timezone時(shí)區(qū)(默認(rèn):'local')
connectTimeout連接超時(shí)(默認(rèn):不限制;單位:毫秒)
stringifyObjects是否序列化對(duì)象
typeCast是否將列值轉(zhuǎn)化為本地JavaScript類(lèi)型值 (默認(rèn):true)
queryFormat自定義query語(yǔ)句格式化方法
supportBigNumbers數(shù)據(jù)庫(kù)支持bigint或decimal類(lèi)型列時(shí),需要設(shè)此option為true (默認(rèn):false)
bigNumberStringssupportBigNumbers和bigNumberStrings啟用 強(qiáng)制bigint或decimal列以JavaScript字符串類(lèi)型返回(默認(rèn):false)
dateStrings強(qiáng)制timestamp,datetime,data類(lèi)型以字符串類(lèi)型返回,而不是JavaScript Date類(lèi)型(默認(rèn):false)
debug開(kāi)啟調(diào)試(默認(rèn):false)
multipleStatements是否許一個(gè)query中有多個(gè)MySQL語(yǔ)句 (默認(rèn):false)
flags用于修改連接標(biāo)志
ssl使用ssl參數(shù)(與crypto.createCredenitals參數(shù)格式一至)或一個(gè)包含ssl配置文件名稱的字符串,目前只捆綁Amazon RDS的配置文件

數(shù)據(jù)庫(kù)操作( CURD )

在進(jìn)行數(shù)據(jù)庫(kù)操作前,你可以對(duì)現(xiàn)有的數(shù)據(jù)進(jìn)行操作,也可以新建數(shù)據(jù)來(lái)進(jìn)行操作,也可以使用NodeJS的Faker模塊產(chǎn)生批量的假數(shù)據(jù)來(lái)操作。本教程測(cè)試的 MySQL 用戶名為 root,密碼為 root,數(shù)據(jù)庫(kù)為 gov,你需要根據(jù)自己配置情況修改。

查詢數(shù)據(jù)

執(zhí)行以下代碼即可查詢出數(shù)據(jù):

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    port: '3306',
    database: 'gov'
});

connection.connect();

var sql = 'select * from gov_policy';
//查
connection.query(sql, function (err, result) {
    if (err) {
        console.log('[SELECT ERROR] - ', err.message);
        return;
    }

    console.log('--------------------------SELECT----------------------------');
    console.log(result);
    console.log('------------------------------------------------------------\n\n');
});

connection.end();

執(zhí)行以上命令輸出就結(jié)果為:

$ node test.js
--------------------------SELECT----------------------------
[ RowDataPacket {
    id: 1,
    name: 'Google',
    url: 'https://www.google.cm/',
    alexa: 1,
    country: 'USA' },
  RowDataPacket {
    id: 2,
    name: '淘寶',
    url: 'https://www.taobao.com/',
    alexa: 13,
    country: 'CN' },
    ......
  RowDataPacket {
    id: 4,
    name: '微博',
    url: 'http://weibo.com/',
    alexa: 20,
    country: 'CN' },
  RowDataPacket {
    id: 5,
    name: 'Facebook',
    url: 'https://www.facebook.com/',
    alexa: 3,
    country: 'USA' } ]
------------------------------------------------------------

插入數(shù)據(jù)

我們可以向數(shù)據(jù)表中插入數(shù)據(jù):

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    port: '3306',
    database: 'gov'
});

connection.connect();

var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)';
var addSqlParams = ['博客論壇', 'https://segmentfault.com', 'NodeJS', 'China'];
//增
connection.query(addSql, addSqlParams, function (err, result) {
    if (err) {
        console.log('[INSERT ERROR] - ', err.message);
        return;
    }

    console.log('--------------------------INSERT----------------------------');
    //console.log('INSERT ID:',result.insertId);
    console.log('INSERT ID:', result);
    console.log('-----------------------------------------------------------------\n\n');
});

connection.end();

更新數(shù)據(jù)

我們也可以對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行修改:

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    port: '3306',
    database: 'gov'
});

connection.connect();

var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?';
var modSqlParams = ['思否論壇', 'https://segmentfault.com', 6];
//改
connection.query(modSql, modSqlParams, function (err, result) {
    if (err) {
        console.log('[UPDATE ERROR] - ', err.message);
        return;
    }
    console.log('--------------------------UPDATE----------------------------');
    console.log('UPDATE affectedRows', result.affectedRows);
    console.log('-----------------------------------------------------------------\n\n');
});

connection.end();

輸出的結(jié)果為:

--------------------------UPDATE----------------------------
UPDATE affectedRows 1
-----------------------------------------------------------------

刪除數(shù)據(jù)

我們可以使用以下代碼來(lái)刪除 id 為 6 的數(shù)據(jù):

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    port: '3306',
    database: 'gov'
});

connection.connect();

var delSql = 'DELETE FROM websites where id=6';
//刪
connection.query(delSql, function (err, result) {
    if (err) {
        console.log('[DELETE ERROR] - ', err.message);
        return;
    }

    console.log('--------------------------DELETE----------------------------');
    console.log('DELETE affectedRows', result.affectedRows);
    console.log('-----------------------------------------------------------------\n\n');
});

connection.end();

執(zhí)行以下命令輸出就結(jié)果為:

--------------------------DELETE----------------------------
DELETE affectedRows 1
-----------------------------------------------------------------

流式讀取數(shù)據(jù)

當(dāng)數(shù)據(jù)有幾千萬(wàn)條的時(shí)候,上面普通的查詢操作會(huì)導(dǎo)致內(nèi)存占用過(guò)高,也就是數(shù)據(jù)會(huì)先緩存下來(lái),然后再返回給我們,如果數(shù)據(jù)龐大就需要采用流式讀取的方式,占用內(nèi)存少:

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    port: '3306',
    database: 'gov'
});

connection.connect();

var sql = 'SELECT * FROM gov_policy_old';

const query = connection.query(sql);
query.on('error', function (err) {
    console.log(err);
}).on('fields', function (fields) {
    // console.log(fields);
}).on('result', function (row) {
    console.log(row['title']);
}).on('end', function () {
    connection.end();
})

參考

以上就是NodeJS連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作詳解的詳細(xì)內(nèi)容,更多關(guān)于NodeJS連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作詳解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Node.js Express 框架 POST方法詳解

    Node.js Express 框架 POST方法詳解

    這篇文章主要介紹了Node.js Express 框架 POST方法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 詳解離線安裝npm包的幾種方法

    詳解離線安裝npm包的幾種方法

    這篇文章主要介紹了詳解離線安裝npm包的幾種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 淺析node.js的模塊加載機(jī)制

    淺析node.js的模塊加載機(jī)制

    這篇文章主要介紹了淺析node.js的模塊加載機(jī)制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • node.js中使用Export和Import的方法

    node.js中使用Export和Import的方法

    這篇文章主要介紹了node.js中使用Export和Import的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Node.js assert斷言原理與用法分析

    Node.js assert斷言原理與用法分析

    這篇文章主要介紹了Node.js assert斷言原理與用法,結(jié)合實(shí)例形式分析了assert模塊斷言函數(shù)與使用技巧,需要的朋友可以參考下
    2019-01-01
  • node.js實(shí)現(xiàn)簡(jiǎn)單的壓縮/解壓縮功能示例

    node.js實(shí)現(xiàn)簡(jiǎn)單的壓縮/解壓縮功能示例

    這篇文章主要介紹了node.js實(shí)現(xiàn)簡(jiǎn)單的壓縮/解壓縮功能,結(jié)合實(shí)例形式分析了node.js實(shí)現(xiàn)本地文件與服務(wù)器端壓縮/解壓縮相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 詳解nodejs 文本操作模塊-fs模塊(二)

    詳解nodejs 文本操作模塊-fs模塊(二)

    這篇文章主要介紹了詳解nodejs 文本操作模塊-fs模塊(二),主要包括文件的讀寫(xiě)操作,有興趣的可以了解一下。
    2016-12-12
  • 從零開(kāi)始學(xué)習(xí)Node.js系列教程之設(shè)置HTTP頭的方法示例

    從零開(kāi)始學(xué)習(xí)Node.js系列教程之設(shè)置HTTP頭的方法示例

    這篇文章主要介紹了Node.js設(shè)置HTTP頭的方法,詳細(xì)分析了常見(jiàn)HTTP頭的功能、原理及相關(guān)設(shè)置操作技巧,需要的朋友可以參考下
    2017-04-04
  • HBuilder中報(bào)錯(cuò)cli項(xiàng)目運(yùn)行依賴本地的Nodejs環(huán)境解決方法

    HBuilder中報(bào)錯(cuò)cli項(xiàng)目運(yùn)行依賴本地的Nodejs環(huán)境解決方法

    使用Node.js,可以方便地開(kāi)發(fā)服務(wù)器端應(yīng)用程序,如Web應(yīng)用、API、后端服務(wù),還可以通過(guò)Node.js構(gòu)建命令行工具等,這篇文章主要介紹了HBuilder中報(bào)錯(cuò)cli項(xiàng)目運(yùn)行依賴本地的Nodejs環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2026-03-03
  • 關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對(duì)比

    關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對(duì)比

    這篇文章主要給大家介紹了關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對(duì)比,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

清苑县| 德阳市| 望城县| 嘉禾县| 即墨市| 万年县| 镇安县| 望江县| 黄陵县| 衡水市| 罗山县| 莱芜市| 大名县| 泰顺县| 渭源县| 土默特右旗| 望江县| 彭阳县| 田东县| 平陆县| 乐业县| 涟源市| 合川市| 绥德县| 普兰店市| 夹江县| 漠河县| 沙河市| 正镶白旗| 锡林浩特市| 黔西县| 南开区| 承德县| 夏河县| 安宁市| 咸阳市| 楚雄市| 华容县| 临安市| 乐亭县| 鹤山市|