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

Express實(shí)現(xiàn)前端后端通信上傳圖片之存儲(chǔ)數(shù)據(jù)庫(mysql)傻瓜式教程(二)

 更新時(shí)間:2015年12月10日 16:51:35   投稿:mrr  
這篇文章主要介紹了Express實(shí)現(xiàn)前端后端通信上傳圖片之存儲(chǔ)數(shù)據(jù)庫(mysql)傻瓜教程(二)的相關(guān)資料,需要的朋友可以參考下

在上篇文章給大家介紹了express實(shí)現(xiàn)前端后端通信上傳圖片之存儲(chǔ)數(shù)據(jù)庫(mysql)傻瓜教程(一)

數(shù)據(jù)庫如標(biāo)題,使用開源的mysql為基礎(chǔ),我是下載的解壓版本(自行百度就有,用百度下載的就行),配置過程http://www.dbjr.com.cn/article/76206.htm,本人在安裝過程中,對(duì)于配置my.ini文件著實(shí)找了好久的教程,所以貼上本人的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ù),然后啟動(dòng)服務(wù)。

net start mysql

  上面的配置mysql教程鏈接中有navicat for mysql的下載地址(是mysql的可視化工具),還有注冊(cè)的信息,不想打命令行的同學(xué)可以下載使用,更加方便些。

  第一次登陸數(shù)據(jù)庫

mysql -uroot -p

直接回車,沒有密碼。

(ps:我在使用中手動(dòng)填寫數(shù)據(jù)庫時(shí),輸入中文時(shí)會(huì)有亂碼問題,解決方案如下:右鍵一個(gè)數(shù)據(jù)庫,然后選擇數(shù)據(jù)庫屬性,修改字符集為utf8格式,整理選擇第一個(gè)就行,如圖:
        )

  下面就要使用node連接數(shù)據(jù)庫了。各位看官可以泡杯茶繼續(xù)~。

  felixge/node-mysql是一個(gè)純nodejs的用javascript實(shí)現(xiàn)的一個(gè)MySQL客戶端程序。felixge/node-mysql封裝了Nodejs對(duì)MySQL的基本操作,100% MIT公共許可證。

  項(xiàng)目地址:https://github.com/felixge/node-mysql

  在項(xiàng)目中安裝node-mysql,進(jìn)入昨天建立好的myapp文件夾,運(yùn)行:

npm install mysql

  接下來進(jìn)行測(cè)試,把官網(wǎng)的例子修改下,放到咱們的項(xià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)建一個(gè)connection
 var connection = mysql.createConnection({
 host: '127.0.0.1', //主機(jī)
 user: 'root', //MySQL認(rèn)證用戶名
 password: '111', //MySQL認(rèn)證用戶密碼,沒有測(cè)試沒有密碼時(shí)為空是否能登陸,不能的話設(shè)置下登陸密碼
 port: '3306', //端口號(hào)
 database: 'nodesample'
 });
 //創(chuàng)建一個(gè)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;

 打開頁面后,命令符顯示效果如下:

 測(cè)試成功!!,下面建立測(cè)試數(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)行,點(diǎ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)建一個(gè)connection
 var connection = mysql.createConnection({
 host: '127.0.0.1', //主機(jī)
 user: 'root', //MySQL認(rèn)證用戶名
 password: '111', //MySQL認(rèn)證用戶密碼
 port: '3306', //端口號(hào)
 database: 'nodesample'
 });
 //創(chuàng)建一個(gè)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ù)庫了,基本的一些操作請(qǐng)參考http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html#mysql_mod,增刪改查里面都有介紹。

   后面應(yīng)該是介紹大家上傳的圖片存儲(chǔ)數(shù)據(jù)庫的,但遇到了一些坑,才解決,最精彩的留在明天~,
  主要是路由的問題,主頁請(qǐng)求了模板,這個(gè)時(shí)候是無法在往前端發(fā)送數(shù)據(jù)的,所以會(huì)用到express的中間件,大家晚安~。

相關(guān)文章

  • 微信js-sdk分享功能接口常用邏輯封裝示例

    微信js-sdk分享功能接口常用邏輯封裝示例

    這篇文章主要介紹了微信js-sdk分享功能接口常用邏輯封裝,簡單介紹了分享功能接口的功能、邏輯封裝與使用方法,需要的朋友可以參考下
    2016-10-10
  • 一文總結(jié)JavaScript中常見的設(shè)計(jì)模式

    一文總結(jié)JavaScript中常見的設(shè)計(jì)模式

    在程序設(shè)計(jì)中有很多實(shí)用的設(shè)計(jì)模式,而其中大部分語言的實(shí)現(xiàn)都是基于“類”。在程序設(shè)計(jì)中有很多實(shí)用的設(shè)計(jì)模式,而其中大部分語言的實(shí)現(xiàn)都是基于“類”。,本文將總結(jié)了JavaScript中常見的十五種設(shè)計(jì)模式,感興趣的朋友可以參考下
    2023-05-05
  • javascript延時(shí)加載之defer測(cè)試

    javascript延時(shí)加載之defer測(cè)試

    偶爾發(fā)現(xiàn) js 中有個(gè)延時(shí)加載的標(biāo)簽 defer,還在疑惑這么好用的東西為什么沒有流行起來,本人今天把它拾起來用了一下,發(fā)現(xiàn)只在ie7,8,9和360安全濟(jì)覽器下可以,知道為什么不用它了吧
    2012-12-12
  • iview?date-picker?options只可選當(dāng)前日期之前的(當(dāng)前之后的禁用)

    iview?date-picker?options只可選當(dāng)前日期之前的(當(dāng)前之后的禁用)

    如果日期對(duì)象date的時(shí)間戳大于當(dāng)前時(shí)間的時(shí)間戳,則該日期在當(dāng)前日期之后,會(huì)被禁用,下面通過實(shí)例代碼給大家介紹iview?date-picker?options只可選當(dāng)前日期之前的,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 各瀏覽器對(duì)document.getElementById等方法的實(shí)現(xiàn)差異解析

    各瀏覽器對(duì)document.getElementById等方法的實(shí)現(xiàn)差異解析

    這篇文章主要是對(duì)各瀏覽器對(duì)document.getElementById等方法的實(shí)現(xiàn)差異進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-12-12
  • js用拖動(dòng)滑塊來控制圖片大小的方法

    js用拖動(dòng)滑塊來控制圖片大小的方法

    這篇文章主要介紹了js用拖動(dòng)滑塊來控制圖片大小的方法,實(shí)例分析了javascript使用鼠標(biāo)事件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • javascript動(dòng)態(tài)修改Li節(jié)點(diǎn)值的方法

    javascript動(dòng)態(tài)修改Li節(jié)點(diǎn)值的方法

    這篇文章主要介紹了javascript動(dòng)態(tài)修改Li節(jié)點(diǎn)值的方法,涉及針對(duì)li節(jié)點(diǎn)的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 微信小程序在其他頁面監(jiān)聽globalData中值的變化

    微信小程序在其他頁面監(jiān)聽globalData中值的變化

    這篇文章主要給大家介紹了關(guān)于微信小程序如何在其他頁面監(jiān)聽globalData中值的變化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 讓微信小程序支持ES6中Promise特性的方法詳解

    讓微信小程序支持ES6中Promise特性的方法詳解

    微信更新自家的Web開發(fā)工具后無法使用原生 Promise,下面這篇教程教你引入第三方庫來使用 Promise,文中通過圖文介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • 判斷一個(gè)變量是數(shù)組Array類型的方法

    判斷一個(gè)變量是數(shù)組Array類型的方法

    JavaScript中如何判斷一個(gè)變量是數(shù)組Array類型呢?本文向大家提供一個(gè)比較不錯(cuò)的方法,可以說是無懈可擊了
    2013-09-09

最新評(píng)論