Express實現(xiàn)前端后端通信上傳圖片之存儲數(shù)據(jù)庫(mysql)傻瓜式教程(二)
在上篇文章給大家介紹了express實現(xiàn)前端后端通信上傳圖片之存儲數(shù)據(jù)庫(mysql)傻瓜教程(一)
數(shù)據(jù)庫如標(biāo)題,使用開源的mysql為基礎(chǔ),我是下載的解壓版本(自行百度就有,用百度下載的就行),配置過程http://chabaoo.cn/article/76206.htm,本人在安裝過程中,對于配置my.ini文件著實找了好久的教程,所以貼上本人的my.ini文件
[mysqld] basedir="D:/MySql" datadir="D:/MySql/data" port = 3306 socket = "/tmp/mysql.sock" [client] password = port = 3306 socket = "/tmp/mysql.sock" default-character-set = utf8
可以看到我的mysql是安裝在Mysql文件夾下的,大家可以按照自己的路徑進(jìn)行修改。
然后在bin文件夾下運(yùn)行
mysqld -install
安裝mysql服務(wù),然后啟動服務(wù)。
net start mysql
上面的配置mysql教程鏈接中有navicat for mysql的下載地址(是mysql的可視化工具),還有注冊的信息,不想打命令行的同學(xué)可以下載使用,更加方便些。
第一次登陸數(shù)據(jù)庫
mysql -uroot -p
直接回車,沒有密碼。
(ps:我在使用中手動填寫數(shù)據(jù)庫時,輸入中文時會有亂碼問題,解決方案如下:右鍵一個數(shù)據(jù)庫,然后選擇數(shù)據(jù)庫屬性,修改字符集為utf8格式,整理選擇第一個就行,如圖:
)
下面就要使用node連接數(shù)據(jù)庫了。各位看官可以泡杯茶繼續(xù)~。
felixge/node-mysql是一個純nodejs的用javascript實現(xiàn)的一個MySQL客戶端程序。felixge/node-mysql封裝了Nodejs對MySQL的基本操作,100% MIT公共許可證。
項目地址:https://github.com/felixge/node-mysql
在項目中安裝node-mysql,進(jìn)入昨天建立好的myapp文件夾,運(yùn)行:
npm install mysql
接下來進(jìn)行測試,把官網(wǎng)的例子修改下,放到咱們的項目里面,修改routes/index.js,重啟express
var express = require('express'); var router = express.Router();var mysql = require('mysql'); //調(diào)用MySQL模塊 router.get('/', function(req, res) { res.render('index', { title: '孟星魂' }); //創(chuàng)建一個connection var connection = mysql.createConnection({ host: '127.0.0.1', //主機(jī) user: 'root', //MySQL認(rèn)證用戶名 password: '111', //MySQL認(rèn)證用戶密碼,沒有測試沒有密碼時為空是否能登陸,不能的話設(shè)置下登陸密碼 port: '3306', //端口號 database: 'nodesample' }); //創(chuàng)建一個connection connection.connect(function(err) { if (err) { console.log('[query] - :' + err); return; } console.log('[connection connect] succeed!'); }); //執(zhí)行SQL語句 connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { if (err) { console.log('[query] - :' + err); return; } console.log('The solution is: ', rows[0].solution); }); //關(guān)閉connection connection.end(function(err) { if (err) { return; } console.log('[connection end] succeed!'); }); }); module.exports = router;
打開頁面后,命令符顯示效果如下:
測試成功??!,下面建立測試數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS nodesample CHARACTER SET UTF8; USE nodesample; SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `userinfo`; CREATE TABLE `userinfo` ( `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `UserName` varchar(64) NOT NULL COMMENT '用戶名', `UserPass` varchar(64) NOT NULL COMMENT '用戶密碼', PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶信息表';
這段代碼可以直接在navicat里面運(yùn)行,點擊工具,console,粘貼,回車就好了。
接下來往數(shù)據(jù)庫中添加一條數(shù)據(jù),修改routes/index.js,如下
var express = require('express'); var router = express.Router(); var mysql = require('mysql'); //調(diào)用MySQL模塊 router.get('/', function(req, res) { res.render('index', { title: '孟星魂' }); //創(chuàng)建一個connection var connection = mysql.createConnection({ host: '127.0.0.1', //主機(jī) user: 'root', //MySQL認(rèn)證用戶名 password: '111', //MySQL認(rèn)證用戶密碼 port: '3306', //端口號 database: 'nodesample' }); //創(chuàng)建一個connection connection.connect(function(err) { if (err) { console.log('[query] - :' + err); return; } console.log('[connection connect] succeed!'); }); //執(zhí)行SQL語句 var userAddSql = 'INSERT INTO userinfo(Id,UserName,UserPass) VALUES(0,?,?)'; var userAddSql_Params = ['Wilson', 'abcd']; //增 connection.query(userAddSql, userAddSql_Params, 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'); }); //關(guān)閉connection connection.end(function(err) { if (err) { return; } console.log('[connection end] succeed!'); }); });
module.exports = router;
重啟express,刷新頁面,命令符顯示:
數(shù)據(jù)庫顯示:
好了,現(xiàn)在大家已經(jīng)可以操作數(shù)據(jù)庫了,基本的一些操作請參考http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html#mysql_mod,增刪改查里面都有介紹。
后面應(yīng)該是介紹大家上傳的圖片存儲數(shù)據(jù)庫的,但遇到了一些坑,才解決,最精彩的留在明天~,
主要是路由的問題,主頁請求了模板,這個時候是無法在往前端發(fā)送數(shù)據(jù)的,所以會用到express的中間件,大家晚安~。
- Express實現(xiàn)前端后端通信上傳圖片之存儲數(shù)據(jù)庫(mysql)傻瓜式教程(一)
- 淺析node連接數(shù)據(jù)庫(express+mysql)
- MySQL運(yùn)行報錯:“Expression?#1?of?SELECT?list?is?not?in?GROUP?BY?clause?and?contains?nonaggre”解決方法
- node基于express框架操作Mysql數(shù)據(jù)庫的步驟
- 解決大于5.7版本mysql的分組報錯Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
- Node.js+Express+Mysql 實現(xiàn)增刪改查
- Express項目中操作MySQL的步驟
相關(guān)文章
一文總結(jié)JavaScript中常見的設(shè)計模式
在程序設(shè)計中有很多實用的設(shè)計模式,而其中大部分語言的實現(xiàn)都是基于“類”。在程序設(shè)計中有很多實用的設(shè)計模式,而其中大部分語言的實現(xiàn)都是基于“類”。,本文將總結(jié)了JavaScript中常見的十五種設(shè)計模式,感興趣的朋友可以參考下2023-05-05iview?date-picker?options只可選當(dāng)前日期之前的(當(dāng)前之后的禁用)
如果日期對象date的時間戳大于當(dāng)前時間的時間戳,則該日期在當(dāng)前日期之后,會被禁用,下面通過實例代碼給大家介紹iview?date-picker?options只可選當(dāng)前日期之前的,感興趣的朋友跟隨小編一起看看吧2024-12-12各瀏覽器對document.getElementById等方法的實現(xiàn)差異解析
這篇文章主要是對各瀏覽器對document.getElementById等方法的實現(xiàn)差異進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12javascript動態(tài)修改Li節(jié)點值的方法
這篇文章主要介紹了javascript動態(tài)修改Li節(jié)點值的方法,涉及針對li節(jié)點的操作技巧,非常具有實用價值,需要的朋友可以參考下2015-01-01微信小程序在其他頁面監(jiān)聽globalData中值的變化
這篇文章主要給大家介紹了關(guān)于微信小程序如何在其他頁面監(jiān)聽globalData中值的變化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07