Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)


在上篇文章给大家介绍了express实现前端后端通信上传图片之存储数据库(mysql)傻瓜教程(一)

数据库如标题,使用开源的mysql为基础,我是下载的解压版本(自行百度就有,用百度下载的就行),配置过程http://www.phpstudy.net/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文件夹下的,大家可以按照自己的路径进行修改。

  然后在bin文件夹下运行

mysqld -install

  安装mysql服务,然后启动服务。

net start mysql

  上面的配置mysql教程链接中有navicat for mysql的下载地址(是mysql的可视化工具),还有注册的信息,不想打命令行的同学可以下载使用,更加方便些。

  第一次登陆数据库

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的中间件,大家晚安~。



相关阅读:
详解Debian系统中安装Linux新内核的流程
iPad系统常用文件夹位置整理
简要分析Java多进程编程的并发控制
论JavaScript模块化编程
深入浅析JS的数组遍历方法(推荐)
ThinkPHP视图查询详解
HTML5 canvas基本绘图之绘制线段
VC基于ADO技术访问数据库的方法
Android编程之内存溢出解决方案(OOM)实例总结
Android图片处理实例介绍(图)
android预置默认的语音信箱号码具体实现
Java编程中字节流与字符流IO操作示例
VC创建DLL动态链接库的方法
jQuery插件制作之参数用法实例分析
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 老师,我永远忘不了你 企业员工培训协议书 高二入党申请书2500字 每一个不曾起舞的日子,都是对生命的辜负。 明白了值日的真正意义 忆往昔,感恩师 中秋晚会三句半台词 后青春期碎言 谁也拗不过岁月 感谢母校_六年级作文 妈妈,请你也为我留盏灯 与爱无缘 阿沁励志歌曲:光荣时刻 学生社区服务工作计划3篇 浅谈由发展模式异同到中印经济的合作 我的孤寂.世界 描写青春的成语及其解释 我有吉他了! 我的波粒二象性 校园安全管理工作 一件难忘的事 赵宇航 好无助 彷徨 雨娃娃100字 望夫石随想 “6﹒26”国际禁毒日系列宣传活动实施方案 第一次放炮作文350字 红尘行走,莫忘初心 风穿过发丝 县教育局2013年上半年工作总结及下半年工作要点-半年工作总结_半年工作总结 欣赏能力 县安全生产监督管理局某年工作总结 在树八荣八耻先进人物座谈会上的讲话(煤矿) 电话销售实习总结 护士长述职报告格式 时碧莹,我想对你说作文400字 2015共青团赤壁市委年工作要点计划 我的同桌是班长读后感 十大气势雄伟的励志背景音乐 关于柳树的古诗句集锦|关于柳树的古诗句集锦作文素材 即事重题 你我之间怎会有亏欠 第一次野炊作文500字 见义勇为下的奇遇 赛尔号的小说 七月避暑圣地,景美人少美食多的旅游景点 国土局公务员科学发展观演讲稿 大堰河的壮美风光 飞翔的雄鹰】 牧童诗 黄庭坚_牧童诗的意思 一年痴呆,一年守望

Copyright © 2016 phpStudy |