一直以来,觉得留言本是很简单的,昨天开始做第一个留言本,还真有些细节需要特别注意。
现在简单的功能已经基本实现。
现在简单的功能已经基本实现。
任何人可以留言(好象是废话,要不怎么叫留言本?呵呵)
管理员可以删除留言、回复留言。
总的感觉来说,很大的问题还是存于数据库方面。
用到的表:1  gbook  用来存放留言人、标题、留言内容等
这个是主要用到的表,为了使管理员删除记录后,再留言留言时id重新更新,也就是依次前提。加了一个函数(功能获得最大id):
    
         create function f_getid()
create function f_getid()
 returns int
returns int
 as
as
 begin
begin
 declare @id int
declare @id int
 select @id=max(id) from gbook
select @id=max(id) from gbook
 set @id=isnull(@id,0)+1
set @id=isnull(@id,0)+1
 return(@id)
return(@id)
 end
end 
        
    
建立表,此表的id不使用identity
    
         CREATE TABLE [dbo].[gbook] (
CREATE TABLE [dbo].[gbook] (
 [id]  int default dbo.f_getid() primary key ,
    [id]  int default dbo.f_getid() primary key ,
 [uname] [varchar] (20),
    [uname] [varchar] (20),
 [utitle] [varchar] (50) ,
    [utitle] [varchar] (50) ,
 [ubody] [text],
    [ubody] [text], 
 [udate] [datetime]
    [udate] [datetime] 
 )
) 
 GO
GO  
        
    
这个是主要用到的表,为了使管理员删除记录后,再留言留言时id重新更新,也就是依次前提。加了一个函数(功能获得最大id):
 create function f_getid()
create function f_getid() returns int
returns int as
as begin
begin declare @id int
declare @id int select @id=max(id) from gbook
select @id=max(id) from gbook set @id=isnull(@id,0)+1
set @id=isnull(@id,0)+1 return(@id)
return(@id) end
end 
        建立表,此表的id不使用identity
 CREATE TABLE [dbo].[gbook] (
CREATE TABLE [dbo].[gbook] ( [id]  int default dbo.f_getid() primary key ,
    [id]  int default dbo.f_getid() primary key , [uname] [varchar] (20),
    [uname] [varchar] (20), [utitle] [varchar] (50) ,
    [utitle] [varchar] (50) , [ubody] [text],
    [ubody] [text],  [udate] [datetime]
    [udate] [datetime]  )
)  GO
GO  
        还要建立一个触发器,目的就是,当删除记录再增加留言时,id重新更新:
    
         create trigger t_delete on gbook
create trigger t_delete on gbook
 AFTER delete
AFTER delete
 as
as
 declare @id int,@mid int
declare @id int,@mid int
 select @mid=min(id),@id=@mid-1 from deleted
select @mid=min(id),@id=@mid-1 from deleted
 update gbook set id=@id,@id=@id+1 where id>@mid
update gbook set id=@id,@id=@id+1 where id>@mid
 go
go 
        
    
2 guest表, 用来存放管理员的信息
 create trigger t_delete on gbook
create trigger t_delete on gbook AFTER delete
AFTER delete as
as declare @id int,@mid int
declare @id int,@mid int select @mid=min(id),@id=@mid-1 from deleted
select @mid=min(id),@id=@mid-1 from deleted update gbook set id=@id,@id=@id+1 where id>@mid
update gbook set id=@id,@id=@id+1 where id>@mid go
go 
        2 guest表, 用来存放管理员的信息
这个表没什么特殊的,只是存放管理员的信息
3 answer 表,存放的是"回复"的内容
这个表的建立要注意:因为删除gbook表的记录时需要把次表中相同的记录删除,并也要更新!
    
         CREATE TABLE [answer] (
 CREATE TABLE [answer] ( 
 [id] [int] references [dbo].[gbook]([id]) on update cascade on delete cascade ,
 [id] [int] references [dbo].[gbook]([id]) on update cascade on delete cascade , 
 [answer_body] [text]  ,
 [answer_body] [text]  , 
 [answer_date] [datetime]   )
 [answer_date] [datetime]   )  
        
    
 CREATE TABLE [answer] (
 CREATE TABLE [answer] (  [id] [int] references [dbo].[gbook]([id]) on update cascade on delete cascade ,
 [id] [int] references [dbo].[gbook]([id]) on update cascade on delete cascade ,  [answer_body] [text]  ,
 [answer_body] [text]  ,  [answer_date] [datetime]   )
 [answer_date] [datetime]   )  
        --- 前台asp.net+c# 开发:
主要是三个aspx页面,代码不写了,简单说下关系:
1 submit.aspx 这个是用户写留言的地方,提交后会存放至gbook表中。
2 show.aspx  这个是查看留言的页面,用到了DataGrid,模板列等。
3 answer.aspx,这个是管理员用来回复留言的,通过的是gbook表中的id.
主要页面截图:
 传上后那么小,看都看不清楚,放到象册里
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号