牛腩新闻发布系统概要
2015-06-07 22:25
337 查看
开始了B/S项目学习,第一个学习内容就是开发新闻发布系统,跟着牛腩老师的视频学习有几天了,在这个过程
中也积累了点知识,在这里把新闻发布系统的一个轮廓叙述一下了。
系统说明
1、系统的整体功能
就是能够实现后台人员添加新闻,在前台可以浏览新闻并发表评论2、功能图
[align=left] [/align]
3、数据库设计图
[align=left] [/align]
4、建表
--建立数据库 create database newssystem --建立类别表 create table category ( id int identity(1,1) primary key, [name] varchar(20) not null ) --建立新闻表 create table news ( id int identity(1,1) primary key, title varchar(100) not null, [content] text not null, createTime datetime not null, caId int ) --建立评论表 create table comment ( id int identity(1,1) primary key, [content] text not null, createTime datetime not null, userIp varchar(15) not null, newsId int )
5、建立表视图并添加约束
[align=left] [/align]
系统前期小收获
数据库设计好之后开始代码实现了,在实现过程中也遇到了一些问题,解决了这些问题,还是蛮有成就感的。1、在vs中写代码的高效方式
敲完if后,连续按2下tab键,自动加载结构。 方便快捷if (true) { }
2、SQL注入导致的数据丢失
如图,在输入框中输入: 娱乐新闻')delete category where id=3--点击修改新闻类别,发现id=3的新闻不见了。
关于防止SQL注入这块内容将在接下来的博客中详细介绍,这里就不多说了。
3、异常处理,换个写法,简化程序。
(1)一般写法 try-catch-finally/// <summary> /// 执行不带参数的增删改SQL语句或存储过程 /// </summary> /// <param name="cmdText">增删改SQL语句或存储过程</param> /// <param name="ct">命令类型</param> /// <returns></returns> public int ExecuteNonQuery(string cmdText, CommandType ct) { int res; //默认为0 try { cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } catch (Exception ex) { throw ex; } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } } return res; }
(2)优化后写法- 使用using
public int ExecuteNonQuery(string cmdText,CommandType ct) { int res; using (cmd = new SqlCommand(cmdText, GetConn())) { cmd.CommandType = ct; res = cmd.ExecuteNonQuery(); } return res; }
4、SQL触发器中的instead of
编写一个delete触发器,当执行delete语句时,触发动作,代替执行delete-- ============================================= -- Author: 王聚 -- Create date: 2015-06-04 22:11 -- Description: 删除类别触发器 -- ============================================= ALTER TRIGGER [dbo].[trigCategoryDelete] ON [dbo].[category] <span style="color:#ff0000;">INSTEAD OF DELETE </span>AS BEGIN declare @caId int select @caId=id from deleted --删除评论 delete comment where newsId in (select newsId from news where caId=@caId) --删除新闻 delete news where caId=@caId --删除类别 delete category where id=@caId END
5、注释中的TODO魅力
在未完成功能模块代码前加上TODO注释后,就有了记忆功能,在vs中,打开视图-任务列表,双击任务自动定位。小结
1、细节很重要,学习抓好细节,不要急于求成。每当遇到一个新的问题都是值得去探索的,每天积累一些,10天、20天过后会有不一样的变化,才能感觉到学习到了东西。
2、踏踏实实过完每一天,让每天都有所收获,并将学习的东西及时归仓,才有成就感,否则会感觉虚无。
3、不将就是发现的问题的关键。
相关文章推荐
- Win7下Python WEB环境搭建
- [leetcode] Add Binary
- 一步一步跟我学习lucene(19)---lucene增量更新和NRT(near-real-time)Query近实时查询
- 信息安全影响因素
- Pig foreach用法举例
- BC ROUND 43# 03 HDU 5266
- 底层设计应该尽量避免泛型
- 【最小生成树】Bzoj1232 [Usaco2008Nov]安慰奶牛cheer
- chapter11test7
- C++中struct类型增强
- C++中struct类型增强
- hibernate中写配置文件xxx.hbm.xml时那个成员变量的类型type如何写的问题
- Pig load 用法举例
- 理解“属性”
- Pig是轻类型的
- POSIX信号量与互斥锁
- 【重构】SqlParameter的作用
- Open Wifi SSID Broadcast vulnerability
- Open Wifi SSID Broadcast vulnerability
- Pig类型转换