express實現先後端通訊上傳圖片,存儲數據庫(mysql)傻瓜教程(二)

  今天繼續昨天的教程,昨天已經完成了express的安裝和圖片的上傳功能,相信各位看官收穫頗豐,有什麼問題的請直接指出,歡迎你們指正^_^。javascript

  附上上篇的連接:http://www.cnblogs.com/wunan/p/express.htmlhtml

   數據庫如標題,使用開源的mysql爲基礎,我是下載的解壓版本(自行百度就有,用百度下載的就行),配置過程http://blog.csdn.net/ccf19881030/article/details/9247235前端

  本人在安裝過程當中,對於配置my.ini文件着實找了很久的教程,因此貼上本人的my.ini文件java

[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文件夾下的,你們能夠按照本身的路徑進行修改。node

  而後在bin文件夾下運行mysql

mysqld -install

  安裝mysql服務,而後啓動服務。git

net start mysql

  上面的配置mysql教程連接中有navicat for mysql的下載地址(是mysql的可視化工具),還有註冊的信息,不想打命令行的同窗能夠下載使用,更加方便些。github

  第一次登錄數據庫sql

mysql -uroot -p

 

  直接回車,沒有密碼。數據庫

(ps:我在使用中手動填寫數據庫時,輸入中文時會有亂碼問題,解決方案以下:右鍵一個數據庫,而後選擇數據庫屬性,修改字符集爲utf8格式,整理選擇第一個就行,如圖:

        


 

  下面就要使用node鏈接數據庫了。各位看官能夠泡杯茶繼續~。

  felixge/node-mysql是一個純nodejs的用javascript實現的一個MySQL客戶端程序。felixge/node-mysql封裝了Nodejs對MySQL的基本操做,100% MIT公共許可證。

  項目地址:https://github.com/felixge/node-mysql

  在項目中安裝node-mysql,進入昨天創建好的myapp文件夾,運行:

npm install mysql

 

   接下來進行測試,把官網的例子修改下,放到我們的項目裏面,修改routes/index.js,重啓express

  

var express = require('express');
var router = express.Router();var mysql = require('mysql'); //調用MySQL模塊
router.get('/', function(req, res) { res.render('index', { title: '孟星魂' }); //建立一個connection var connection = mysql.createConnection({ host: '127.0.0.1', //主機 user: 'root', //MySQL認證用戶名 password: '111', //MySQL認證用戶密碼,沒有測試沒有密碼時爲空是否能登錄,不能的話設置下登錄密碼 port: '3306', //端口號 database: 'nodesample' }); //建立一個connection connection.connect(function(err) { if (err) { console.log('[query] - :' + err); return; } console.log('[connection connect] succeed!'); }); //執行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); }); //關閉connection connection.end(function(err) { if (err) { return; } console.log('[connection end] succeed!'); }); });

module.exports = router;

 

 打開頁面後,命令符顯示效果以下:

  

 測試成功!!,下面創建測試數據庫

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裏面運行,點擊工具,console,粘貼,回車就行了。

  接下來往數據庫中添加一條數據,修改routes/index.js,以下

  

var express = require('express');
var router = express.Router();
var mysql = require('mysql'); //調用MySQL模塊


router.get('/', function(req, res) {

    res.render('index', {
        title: '孟星魂'
    });

    //建立一個connection
    var connection = mysql.createConnection({
        host: '127.0.0.1', //主機
        user: 'root', //MySQL認證用戶名
        password: '111', //MySQL認證用戶密碼
        port: '3306', //端口號
        database: 'nodesample'
    });
    //建立一個connection
    connection.connect(function(err) {
        if (err) {
            console.log('[query] - :' + err);
            return;
        }
        console.log('[connection connect]  succeed!');
    });
    //執行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');
    });
    //關閉connection
    connection.end(function(err) {
        if (err) {
            return;
        }
        console.log('[connection end] succeed!');
    });

});


module.exports = router;

   重啓express,刷新頁面,命令符顯示:

  

  數據庫顯示:

     

  好了,如今你們已經能夠操做數據庫了,基本的一些操做請參考http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html#mysql_mod,增刪改查裏面都有介紹。

 


 

   後面應該是介紹你們上傳的圖片存儲數據庫的,但遇到了一些坑,才解決,最精彩的留在明天~,

  主要是路由的問題,主頁請求了模板,這個時候是沒法在往前端發送數據的,因此會用到express的中間件,你們晚安~。

  歡迎任何形式的轉載,但請務必註明原文詳細連接

相關文章
相關標籤/搜索