牛腩新闻发布系统系列二------之Sql server操作

介绍

牛腩新闻发布系统,是前后台分离的,一个将Sql server, asp.net,c#,jQuery,以及三层架构的小型系统,在这一项目中,我们从无到有,从设计说明书开始到最后的打包,发布.我们实现了一般新闻系统的基本功能<

前景回顾

在上一系列中,我们已经学会了数据库的连接,那么数据库所在的实体Sql server 是如何操作的呢?,下面我就来分别讲解一下.

sql server 软件 安装

对应现存在的sql server 版本来说,对于大多数初学者来说,功能是绝对够用的,所以没有必要纠结与那个sql server 版本,故安装不作太多说明,如果有问题的朋友,可以参考下面的链接:
https://www.2cto.com/database/201709/685180.html
对于数据库安装包下载,以下百度云盘资源:
链接:https://pan.baidu.com/s/1rqDiE8-rxUwThJ2xLnYf4A 密码:egu2
(小插曲: 我非常烦那些下载个安装包还给附带好多的其他软件,所以我将数据库安装包收集到百度云盘中)

在sql server中建数据库

建立数据库方式有俩中,第一用代码写,第二右键点击数据库,添加新数据库
大部分人对代码写数据库有一种莫名奇妙的抵触心理,但是这里我还是要给出,据大牛介绍,这是一种比较专业的方式,代码如下:

手写数据库

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)
)
1先建数据库名
2 建立各种表
3 表中字段格式:
字段名 + 类型 +修饰

点击添加数据库

对于这一种方式,由于sql server软件本身不是很难,这里就不仔细介绍了

在数据库中建立存储过程

提到存储过程,相信对大多数初学者是比较陌生的,那么这里我就简单介绍一下,所谓存储过程,算是一种集成执行sql语句的一种方式,一个存储过程包含了一系列的sql操作,在新闻系统里面,我们用到的有删除新闻,同时将新闻之下所对应的评论都删除,也就是我们的一些sql逻辑操作都可以在sql server中完成,这样我们在项目中就可以调用存储过程,从而达到存储过程中实现的功能.

建立存储过程

牛腩新闻发布系统系列二------之Sql server操作
右键点击存储过程–>添加存储过程
牛腩新闻发布系统系列二------之Sql server操作
上图所示是一个添加新闻的存储过程,有了这个存储过程,我们可以直接调用,就可以实现添加新闻的功能当然,我们在调用的时候也会有一些注意事项
1 和一般sql 操作类似,对存储过程的调用就是替换sql 语句未存储名,代码如下:
这里是调用存储过程
public DataTable SelectNewNews()
{
DataTable dt = new DataTable();
//返回的是一个表.
//return sqlhelper.test(“procNewsSeleteNewNews”);
string proName = “procNewsSeleteNewNews”;
dt = sqlhelper.ExecuteQuery(proName, CommandType.StoredProcedure);
return dt;
}

这里是调用sql语句:
public DataTable SelectNewNews()
{
DataTable dt = new DataTable();
//返回的是一个表.
//return sqlhelper.test(“procNewsSeleteNewNews”);
string proName = “select * from news”;
dt = sqlhelper.ExecuteQuery(proName, CommandType.Text);
return dt;
}

区别

一般语句是对sql进行操作,而存储过程是对一个代码块操作,我们完全可以将存储过程看作是一个函数,这一个函数实现的功能是存储过程代码所决定的!
一般语句的commandtype 是默认值也就是Text ,我们调用存储过程,就需要更换其对应的方式,即CommandType.StoredProcedure.其他保持不变.

存储过程涉及到的语法:

1插入语句
ALTER PROCEDURE [dbo].[news_insert]
@title varchar(100),
@content text,
@caid int
AS
BEGIN
insert into news (title ,[content],caId )
values (@title,@content,@caid)
SET NOCOUNT ON;
END

其中,@title,@content,@caid 是代表三个参数,这三个参数需要在上面定义,这也是我们调用存储过程必须要传入的参数.
2一局新闻类别id 取出对应的所有新闻
select n.id, n.title , n.createTime ,c.[name],n.caId
from news n
inner join category c on n.caId = c.id and n.caId [email protected]
order by n.createTime desc

inner join 是关联表, order by 是排序方式,desc 是降序

3删除新闻,同时删除对应的所有评论
delete comment where newsId = @id
delete news where id= @id
找好对应关系,同时要注意删除的先后顺序.