• 简单的实现QQ通信功能(一)


    第一部分:数据库的设计,数据集的建立

    一:数据库的设计:

    1.用户表:包含用户名、密码、昵称、性别、备注、状态、头像代号和最后登录时间。

    2.朋友关系表:自增长列为主键列,用户名和好友名,还有朋友的状态。

    3.聊天内容表:自增长列为主键列,发送者和接收者,中间有聊天内容和发送时间,还有一个标记未读已读的状态。

    4. 用户状态表:用户状态表主要是有用户状态和状态名字。

    5. SQL数据库内用用查询建立这几个表:

    use mydb
    go
     create table Users
    (
     UserName varchar(50) primary key, --建主键.
     Password varchar(50) not null,  --不能为空值.
     NickName varchar(50),
     Sex bit,
     Memo varchar(50),
     State int,
     PhotoCode int, 
     LastLoginTime datetime , 
    )
    go
    create table Friends
    (
     Ids int identity primary key,
     UserName varchar(50) references Users(UserName),  
     FriendName varchar(50) references Users(UserName),
     State int,
    )
    go
    create table Chat
    (
     Ids int identity primary key,
     Sender varchar(50) references Users(UserName),  
     Receiver varchar(50) references Users(UserName),
     Content text,
     Time datetime,
     State int,
    )
    go
    create table State 
    (
    State int references Users(State), 
    State varchar(50),
    )

    二:建立数据集:

    建立数据集的方式就是先连接到数据库,从数据库中选择需要用到的表拖动至数据集里,之后在使用数据集的时候将适配器的命名空间加上:

    using WindowsFormsApplication2.qqdataTableAdapters;

    将一些在程序中要用到方法通过添加查询添加进数据集的适配器下。

    1. Users表里面添加了一些数据访问方法:

    (1)GetData()是系统自带查询所有行的方法。

    (2)GetDataByUsername(@UserName)是根据用户名查询此行用户数据的方法,返回一行User数据。

    (3)GetPhotoCode(@UserName)是根据用户名查头像代号,返回代号。

    (4)LoginCheck(@username,@password)根据用户名和密码来查询是否存在,用来进行登录判断。

    (5)UpdateLasttimeByCode(@LastLoginTime,@UserName)修改该用户名下的最后登录时间。

    (6)UpdateStateByCode(@State,@UserName)修改该用户名下的状态。

    2. Friends表里添加了一些数据访问方法:

    (1)GetData()是系统自带查询所有行的方法。

    (2)GetDataBy(@UserName)根据用户名查询Friend数据,返回多行Friend。

    3. Chat表里添加了一些数据访问方法:

    (1)GetData()是系统自带查询所有行的方法。

    (2)GetDataBySenderAndReceiver(@Sender,@Receiver,@State)根据发送者、接收者和该信息的状态来查找聊天内容,返回多行。

    (3)InsertChat(@Sender, @Receiver, @Content, @Time, @State)在数据库里插入一行数据,将聊天内容加入到数据库。

    (4)UpdateState(@State ,@Ids)根据聊天内容的序号修改该条内容的状态。

    4. State表里添加了一些数据访问方法:

    (1)GetData()是系统自带查询所有行的方法。

    (2)GetDataBy(@State)根据状态代号查状态名称,返回一行。

  • 相关阅读:
    Codechef Observing the Tree
    bzoj 1367: [Baltic2004]sequence
    bzoj 2375: 疯狂的涂色
    bzoj 1455: 罗马游戏
    codevs 1029 遍历问题
    HNOI2004 宠物收养所 (Treap)
    [ZJOI2007] 报表统计
    bzoj 3261: 最大异或和 (可持久化trie树)
    codevs 1001 舒适的路线
    Codechef Dynamic Trees and Queries
  • 原文地址:https://www.cnblogs.com/Alvin-ftd/p/4077358.html
Copyright © 2020-2023  润新知