這篇文章給大家分享的是有關(guān)Node.js中操作MySQL數(shù)據(jù)庫的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
承德縣網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。使用mysql這個(gè)npm模塊操作MySQL數(shù)據(jù)庫的基礎(chǔ)教程。 不涉及MySQL的安裝和配置,如果電腦中還未安裝MySQL, 推薦安裝WAMP、XAMPP等集成環(huán)境。本文中還使用到了輕量級的Node.js框架Koa搭建web程序,為的是通過前端瀏覽器請求的方式來模擬項(xiàng)目場景,你無需掌握Koa框架的語法也是可以輕松閱讀本文的。
創(chuàng)建項(xiàng)目目錄,并使用npm init
初始化項(xiàng)目后,執(zhí)行下面操作:
npm install mysql koa koa-router
// index.js const Koa = require('koa'); const Router = require('koa-router'); const mysql = require('mysql'); const app = new Koa(); const router = new Router(); const connection = mysql.createConnection({ host: 'localhost', // 填寫你的mysql host user: 'root', // 填寫你的mysql用戶名 password: '123456' // 填寫你的mysql密碼 }) connection.connect(err => { if(err) throw err; console.log('mysql connncted success!'); }) router.get('/', ctx => { ctx.body = 'Visit index'; }) app.use(router.routes()); app.listen(3000);
在shell中執(zhí)行node index.js,當(dāng)看到shell中打印出mysql connected success!,表明MySQL數(shù)據(jù)庫連接成功。
打開瀏覽器, 訪問localhost:3000,當(dāng)看到屏幕顯示Visit index時(shí),表名項(xiàng)目初始化成功。
當(dāng)訪問/createdb時(shí),創(chuàng)建一個(gè)mysqlkoa的數(shù)據(jù)庫,代碼如下:
router.get('/createdb', ctx => { return new Promise(resolve => { const sql = `CREATE DATABASE mysqlkoa`; connection.query(sql, (err) => { if (err) throw err; ctx.body = { code: 200, msg: `create database mysqlkoa success!` } resolve(); }); }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問localhost:3000/createdb
為了方便,我們直接在連接時(shí)使用剛才創(chuàng)建的數(shù)據(jù)庫,需要在mysql.createConnection中添加database:mysqlkoa的配置項(xiàng)。
const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', database: 'mysqlkoa' // 添加該列 })
當(dāng)訪問/createtable時(shí),我們創(chuàng)建一個(gè)數(shù)據(jù)表fe_frame,該表用來保存前端框架的數(shù)據(jù):
router.get('/createtable', ctx => { return new Promise(resolve => { const sql = `CREATE TABLE fe_frame( id INT(11) AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), author VARCHAR(255) )`; connection.query(sql, (err ,results, filelds) => { if (err) throw err; ctx.body = { code: 200, msg: `create table of fe_frame success!` } resolve(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問localhost:3000/createtable
當(dāng)訪問/insert
時(shí),用來插入單條數(shù)據(jù):
router.get('/insert', ctx => { return new Promise(resolve => { const sql = `INSERT INTO fe_frame(name, author) VALUES('vue', 'Evan')`; connection.query(sql, (err) => { if (err) throw err; ctx.body = { cde: 200, msg: `insert data to fe_frame success!` } resolve(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問localhost:3000/insert
當(dāng)訪問/insertmulti
時(shí),用來插入多條數(shù)據(jù):
router.get('/insertmulti', ctx => { return new Promise(resolve => { const sql = `INSERT INTO fe_frame(name, author) VALUES ?`; const values = [ ['React', 'Facebook'], ['Angular', 'Google'], ['jQuery', 'John Resig'] ]; connection.query(sql, [values], (err, result) => { if (err) throw err; ctx.body = { code: 200, msg: `insert ${result.affectedRows} data to fe_frame success!` } resolve(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問localhost:3000/insertmulti
使用phpMyAdmin訪問,可以看到此時(shí)mysqlkoa表如下
當(dāng)訪問/delete時(shí),刪除相應(yīng)行。我們使用請求參數(shù)name來指定刪除哪個(gè)框架,在服務(wù)器端使用ctx.query.name獲取,代碼如下:
router.get('/delete', ctx => { return new Promise(resolve => { const name = ctx.query.name; const sql = `DELETE FROM fe_frame WHERE name = '${name}'`; connection.query(sql, (err, result) => { if (err) throw err; ctx.body = { code: 200, msg: `delete ${result.affectedRows} data from fe_frame success!` }; resolve(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問http://localhost:3000/delete?name=jQuery
當(dāng)訪問/update時(shí),更新vue框架的作者名為Evan You,代碼如下:
router.get('/update', ctx => { return new Promise(resolve => { const sql = `UPDATE fe_frame SET author = 'Evan You' WHERE NAME = 'vue'`; connection.query(sql, (err, result) => { if (err) throw err; ctx.body = { code: 200, msg: `update ${result.affectedRows} data from fe_frame success!` }; resolve(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問http://localhost:3000/update
當(dāng)訪問/select時(shí),獲取滿足請求參數(shù)中框架名條件的項(xiàng),代碼如下:
router.get('/select', ctx => { return new Promise(resolve => { let name = ctx.query.name; const sql = `SELECT * FROM fe_frame WHERE name = '${name}'`; connection.query(sql, (err, result) => { if (err) throw err; ctx.body = { code: 200, data: result } resolve(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問http://localhost:3000/select?name=vue
感謝各位的閱讀!關(guān)于“Node.js中操作MySQL數(shù)據(jù)庫的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。