欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

驅(qū)動安裝

npm install mysql

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

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

var mysql = require('mysql');

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

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

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ù)庫連接參數(shù)說明

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

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

在進行數(shù)據(jù)庫操作前,你可以對現(xiàn)有的數(shù)據(jù)進行操作,也可以新建數(shù)據(jù)來進行操作,也可以使用NodeJS的Faker模塊產(chǎn)生批量的假數(shù)據(jù)來操作。本教程測試的 MySQL 用戶名為 root,密碼為 root,數(shù)據(jù)庫為 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ù)

我們也可以對數(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 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ù)

我們可以使用以下代碼來刪除 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ù)

當數(shù)據(jù)有幾千萬條的時候,上面普通的查詢操作會導(dǎo)致內(nèi)存占用過高,也就是數(shù)據(jù)會先緩存下來,然后再返回給我們,如果數(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ù)庫并進行增刪改查操作詳解的詳細內(nèi)容,更多關(guān)于NodeJS連接MySQL數(shù)據(jù)庫并進行增刪改查操作詳解的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • node.js中的fs.readlink方法使用說明

    node.js中的fs.readlink方法使用說明

    這篇文章主要介紹了node.js中的fs.readlink方法使用說明,本文介紹了fs.readlink方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs利用ajax實現(xiàn)網(wǎng)頁無刷新上傳圖片實例代碼

    nodejs利用ajax實現(xiàn)網(wǎng)頁無刷新上傳圖片實例代碼

    本篇文章主要介紹了nodejs利用ajax實現(xiàn)網(wǎng)頁無刷新上傳圖片實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 使用nodejs、Python寫的一個簡易HTTP靜態(tài)文件服務(wù)器

    使用nodejs、Python寫的一個簡易HTTP靜態(tài)文件服務(wù)器

    這篇文章主要介紹了使用nodejs、Python寫的一個簡易HTTP靜態(tài)文件服務(wù)器,分為nodejs和Python兩個版本,用類似淘寶的CSS、JS文件加載方式處理靜態(tài)文件加載,需要的朋友可以參考下
    2014-07-07
  • 如何使用nexus3搭建npm私有倉庫

    如何使用nexus3搭建npm私有倉庫

    這篇文章主要介紹了如何使用nexus3搭建npm私有倉庫,包括安裝并運行私服的相關(guān)知識,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Node.js進行串口通信的實現(xiàn)示例

    Node.js進行串口通信的實現(xiàn)示例

    本文主要介紹了Node.js進行串口通信的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Node.js?使用?zlib?內(nèi)置模塊進行?gzip?壓縮

    Node.js?使用?zlib?內(nèi)置模塊進行?gzip?壓縮

    這篇文章主要介紹了Node.js?使用?zlib?內(nèi)置模塊進行?gzip?壓縮,nodejs為我們提供了一個zlib內(nèi)置模塊,我們可以使用它其中的gzip方法來對傳遞的數(shù)據(jù)進行壓縮,從而提高數(shù)據(jù)傳遞效率,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • 使用NVM下載Node.js管理多版本的詳細教程(附圖文)

    使用NVM下載Node.js管理多版本的詳細教程(附圖文)

    在開發(fā)過程會一直遇到nodejs的版本問題,直接安裝則只有一個版本,極其不方便,nvm則是用來管理nodejs的工具,可以通過nvm來安裝切換不同版本的nodejs,所以本文給大家介紹了使用NVM下載Node.js管理多版本的詳細教程,文中有詳細的圖文教程,需要的朋友可以參考下
    2025-04-04
  • 教你從零開始在Windows系統(tǒng)上搭建一個node.js后端服務(wù)項目

    教你從零開始在Windows系統(tǒng)上搭建一個node.js后端服務(wù)項目

    這篇文章詳細介紹了如何在Windows環(huán)境下搭建一個Node.js項目并使用Express框架,包括安裝Node.js、配置環(huán)境、創(chuàng)建項目、安裝Express、編輯代碼、運行項目、集成Nodemon實現(xiàn)熱部署等步驟
    2024-11-11
  • 如何利用node.js開發(fā)一個生成逐幀動畫的小工具

    如何利用node.js開發(fā)一個生成逐幀動畫的小工具

    這篇文章主要給大家介紹了關(guān)于如何利用node.js開發(fā)一個生成逐幀動畫小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • NodeJS之優(yōu)缺點及適用場景討論

    NodeJS之優(yōu)缺點及適用場景討論

    這篇文章主要介紹了NodeJS之優(yōu)缺點及適用場景討論,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論