--查询是否master中是否存在qqdb数据库,如果存在则删除
use master
go
if exists(select * from sysdatabases where name='qqdb')
drop database qqdb
go
--创建数据库qqdb
create database qqdb
on
(
name='qqdbName',
filename='D:\haha\qqdb.mdf' --地址
)
log on
(
name='qqdbLog',
filename='D:\haha\qqdb.log'
)
go
--使用数据库
use qqdb
go
--********************************************添加数据表
--QQ用户信息表
create table users
(
id int identity(1000,1) primary key, --QQ号
LoginPwd varchar(15) not null, --密码
FriendshipPolicyId int references friendsShipPolicy(id) default(1),--是否允许加为好友
nickName varchar(20) not null, --昵称
FaceId int default(1) not null, --头像索引,默认为1
sex varchar(2) not null, --性别
age int not null, --年龄
[Name] varchar(16) not null, --真实姓名
starId int not null, --星座编号
BloodTypeId int not null, --血型编号
)
go
--alter table users add default(1) for FriendshipPolicyId 为users表的friendshippolicyid添加默认值
--添加数据
insert into users values('0000',default,'小强',default,'男',18,'刘强',2,3)
go
--好友表
create table friends
(
id int primary key identity, --编号
HostId int references users(id), --主人QQ号
FriendId int references users(id), --好友QQ号
)
go
--添加数据
insert into friends values(1008,1010)
insert into friends values(1008,1009)
go
--验证添加好友方式表
create table friendsShipPolicy
(
id int primary key identity not null, --编号
FriendShipPolicy varchar(50) ,--验证好友方式
)
go
insert into friendsShipPolicy values('允许任何人加我为好友')
insert into friendsShipPolicy values('需要身份验证才能加我为好友')
insert into friendsShipPolicy values('不允许任何人加我为好友')
go
--星座表
create table star
(
id int primary key identity , --编号
Star varchar(10), --星座
)
go
insert into star values('白羊座')
insert into star values('金牛座')
insert into star values('双子座')
insert into star values('巨蟹座')
insert into star values('狮子座')
insert into star values('处女座')
insert into star values('天枰座')
insert into star values('天蝎座')
insert into star values('射手座')
insert into star values('摩羯座')
insert into star values('水瓶座')
insert into star values('双鱼座')
go
--血型表
create table BloodType
(
id int primary key identity, --编号
BloodType varchar(6), --血型
)
go
insert into bloodType values('A型')
insert into bloodType values('B型')
insert into bloodType values('AB型')
insert into bloodType values('O型')
go
--消息类型表
create table MessageType
(
id int primary key identity, --编号
MessageType varchar(20) --消息类型(聊天消息或添加好友消息)
)
go
insert into messagetype values('普通聊天消息')
insert into messagetype values('添加好友消息')
go
--消息表
create table Messages
(
id int identity primary key , --编号
FromUserId int references users(id), --发送人QQ号
ToUserId int references users(id) , --接收人QQ号
MessageText varchar(100), --消息内容
MessageTypeId int references MessageType(id),--消息类型编号
MessageState int , --消息状态(0表示接收人还未读消息,1表示接收人已经读取消息)
MessageTime datetime default(getdate()) --发送消息时间
)
go
--创建存储过程
----------------------------------------------------注册新用户
--添加QQ用户信息
create proc proc_users_insert
@LoginPwd varchar(15), --密码
@nickName varchar(20), --昵称
@sex varchar(2), --性别
@age int, --年龄
@Name varchar(16), --真实姓名
@starId int, --星座编号
@BloodTypeId int --血型编号
as
insert into users values(@LoginPwd,default,@nickName,default,@sex,@age,@Name,@starId,@BloodTypeId)
go
--获取本次添加成功的QQ号码
create proc proc_users_qq
as
select @@Identity from users
go
--绑定下拉列表,星座信息表
create proc proc_star_search
as
select * from star
go
--绑定下拉列表,血型信息表
create proc proc_bloodtype_search
as
select * from bloodtype
go
----------------------------------------------------------用户登录
--创建登录存储过程
create proc proc_users_login
@id int, --QQ号
@LoginPwd varchar(15) --密码
as
select * from users where id=@id and loginpwd=@LoginPwd
go
---------------------------------------------------------------主窗体
--创建显示所有好友存储过程
create proc proc_friends_Search
@HostId int --主人QQ号
as
select friendid,nickname,faceid from users a,friends b where a.id=b.friendid and hostid=@HostId
go
--删除好友
create proc proc_friends_delete
@FriendId int --好友QQ号
as
delete from friends where friendid=@FriendId
go
--读取消息信息
create proc proc_messages_readmessages
@ToUserId int --接收人QQ号
as
select top 1 FromUserId,MessageTypeId,MessageState from Messages where ToUserId=@ToUserId and MessageState=0
go
--读取请求人信息
create proc proc_Users_readFromUserIdMessage
@id int --QQ号
as
select NickName,FaceId from users where id=@id
go
--读取陌生人信息
create proc proc_Users_ReadStranger
@id int
as
select * from users where id=@id
go
-----------------------------------------------------系统消息窗体
--找到发给当前用户发送请求的消息
create proc proc_message_Searchrequest
@ToUserId int --接收人QQ号
as
select top 1 Id,FromUserId from Messages where ToUserId=@ToUserId and MessageState=0 and MessageTypeId=2
go
--将添加好友消息设置为已读
create proc proc_messages_Updatemessages
@id int --编号
as
update messages set MessageState=1 where id=@id
go
--select * from messages
--update messages set MessageState=0 where id=1
-----------------------------------------------------更新好友信息窗体
create proc proc_users_update
@id int, --QQ号
@LoginPwd varchar(15), --密码
@FriendshipPolicyId int, --是否允许加为好友
@nickName varchar(20), --昵称
@FaceId int, --头像索引,默认为1
@sex varchar(2), --性别
@age int, --年龄
@Name varchar(16), --真实姓名
@starId int, --星座编号
@BloodTypeId int --血型编号
as
update users set loginpwd=@LoginPwd,friendshippolicyid=@FriendshipPolicyId,nickname=@nickName,faceid=@FaceId,sex=@sex,age=@age,[name]=@Name,starid=@starId,bloodtypeid=@BloodTypeId where id=@id
go
-----------------------------查找/添加好友
--查询所有用户信息
create proc proc_users_search
as
select id,nickname,age,sex,friendshippolicyid from users
go
--根据qq号查询用户信息
create proc proc_users_searchbyid
@id int --QQ号
as
select id,nickname,age,sex from users where id=@id
go
--根据昵称查询用户信息
create proc proc_users_searchbynickname
@nickName varchar(20) --昵称
as
select id,nickname,age,sex from users where nickname=@nickname
go
--按年龄串查询用户
--create proc proc_users_searchbyage
--@age varchar(20)
--as
-- select id,nickname,age,sex from users where @age
--go
--查询要添加的好友是否已存在(根据主人qq、和好友qq)
create proc proc_friends_searchbyfriendidandhostid
@HostId int, --主人QQ号
@FriendId int --好友QQ号
as
select * from friends where hostid=@HostId and friendid=@FriendId
go
--添加好友信息
create proc proc_friends_insertfriends
@HostId int, --主人QQ号
@FriendId int --好友QQ号
as
insert into friends values(@HostId,@FriendId)
go
--需要好友验证,发出好友信息请求,添加message表 ,类型为2,状态为0
create proc proc_messages_insertfriendmessages
@FromUserId int, --发送人QQ号
@ToUserId int, --接收人QQ号
@MessageTypeId int, --消息类型编号
@MessageState int --消息状态(0表示接收人还未读消息,1表示接收人已经读取消息)
as
insert into messages (FromUserId,ToUserId,MessageTypeId,MessageState) values(@FromUserId,@ToUserId,@MessageTypeId,@MessageState)
go
----------------------------------------------------------聊天儿窗体
--发送聊天消息
create proc proc_messages_insertchatmessages
@FromUserId int, --发送人QQ号
@ToUserId int, --接收人QQ号
@MessageText varchar(100) --消息内容
as
insert into messages(FromUserId,ToUserId,MessageText,MessageTypeId,MessageState) values(@FromUserId,@ToUserId,@MessageText,1,0)
go
--获得发信人的头像id
create proc proc_users_SearchFromUserFaceId
@id int
as
select faceid from users where id=@id
go
--读取所有的未读聊天消息,显示在聊天儿窗体中
create proc proc_messages_ReadAllChatMessages
@FromUserId int, --发送人QQ号
@ToUserId int --接收人QQ号
as
select b.id,a.nickname,b.messagetime,b.messagetext from users a,(select id,fromuserid,messagetime,messagetext from messages where
(fromuserid=@FromUserId and touserid=@ToUserId and messagetypeid=1 and messagestate=0) or (fromuserid=@ToUserId and touserid=@FromUserId and messagetypeid=1 and messagestate=0)) b where a.id=b.fromuserid
go