码迷,mamicode.com
首页 > 其他好文 > 详细

牛腩新闻发布系统概要

时间:2015-06-07 23:39:36      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

 

        开始了B/S项目学习,第一个学习内容就是开发新闻发布系统,跟着牛腩老师的视频学习有几天了,在这个过程

也积累了点知识,在这里把新闻发布系统的一个轮廓叙述一下了。

 

系统说明

 

1、系统的整体功能

        就是能够实现后台人员添加新闻,在前台可以浏览新闻并发表评论

2、功能图

技术分享

 

3、数据库设计图

技术分享

 

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、建立表视图并添加约束

技术分享

 

 

 

系统前期小收获

     数据库设计好之后开始代码实现了,在实现过程中也遇到了一些问题,解决了这些问题,还是蛮有成就感的。

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、不将就是发现的问题的关键。

 

 

 

牛腩新闻发布系统概要

标签:

原文地址:http://blog.csdn.net/wangju2013/article/details/46402157

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!