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

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

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

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

npm install mysql

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

在以下實(shí)例中根據(jù)你的實(shí)際配置修改數(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主機(jī)地址 (默認(rèn):localhost)
user用戶名
password密碼
port端口號(hào) (默認(rèn):3306)
database數(shù)據(jù)庫名
charset連接字符集(默認(rèn):'UTF8_GENERAL_CI',注意字符集的字母都要大寫)
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類型值 (默認(rèn):true)
queryFormat自定義query語句格式化方法
supportBigNumbers數(shù)據(jù)庫支持bigint或decimal類型列時(shí),需要設(shè)此option為true (默認(rèn):false)
bigNumberStringssupportBigNumbers和bigNumberStrings啟用 強(qiáng)制bigint或decimal列以JavaScript字符串類型返回(默認(rèn):false)
dateStrings強(qiáng)制timestamp,datetime,data類型以字符串類型返回,而不是JavaScript Date類型(默認(rèn):false)
debug開啟調(diào)試(默認(rèn):false)
multipleStatements是否許一個(gè)query中有多個(gè)MySQL語句 (默認(rèn):false)
flags用于修改連接標(biāo)志
ssl使用ssl參數(shù)(與crypto.createCredenitals參數(shù)格式一至)或一個(gè)包含ssl配置文件名稱的字符串,目前只捆綁Amazon RDS的配置文件

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

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

我們也可以對(duì)數(shù)據(jù)庫的數(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ù)

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

相關(guān)文章

最新評(píng)論

澄迈县| 理塘县| 百色市| 东兴市| 镇远县| 石屏县| 南京市| 永丰县| 崇文区| 宁远县| 合山市| 沙坪坝区| 齐齐哈尔市| 社旗县| 平安县| 伊春市| 浦江县| 四平市| 久治县| 都安| 瓦房店市| 祁东县| 灵山县| 资兴市| 博爱县| 海安县| 新巴尔虎左旗| 岳阳县| 安国市| 毕节市| 石泉县| 汕头市| 桐柏县| 黄龙县| 拉萨市| 旺苍县| 蒙城县| 彭阳县| 临海市| 六盘水市| 彭泽县|