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

一:数据库的设计:

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)根据状态代号查状态名称,返回一行。

简单的实现QQ通信功能(一)的更多相关文章

  1. 简单的实现QQ通信功能(二)

    第二部分:功能需求以及大体思路 一:功能需求: 1. 角色:登录用户. 2. 登录: (1)检查用户名和密码是否正确,正确登录成功,否则提醒用户名或密码错误. (2)登录时可以选择登录状态,送入数据库 ...

  2. 简单的实现QQ通信功能(四)

    第四部分:主界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)上面显示自己信息用一个PictureBox和两个Label,用来显示自己的头像和昵称备注名. (2)下面用了 ...

  3. 简单的实现QQ通信功能(三)

    第三部分:登陆界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)仿照QQ的登陆界面,右上角放了三个Label,用来做关闭.最小化和设置,使用了它们的Click事件当做按钮 ...

  4. 简单的实现QQ通信功能(五)

    第五部分:聊天界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)左上角显示朋友的头像和“某某正在和某某聊天”. (2)中间的聊天窗口用了一个ListView,视图用详细信 ...

  5. 经测试稳定可用的蓝牙链接通信Demo,记录过程中遇到的问题的思考和解决办法,并整理后给出一个Utils类可以简单调用来实现蓝牙功能

    说明:这是本人在蓝牙开发过程中遇到过的问题记录和分析,以及解决办法. 在研究过程中,许多的前人给出的解决方案和思路指导对我相当有帮助,但并非都是可采取的解决方法, 经过本人对这些方法的测试和使用过后, ...

  6. jsp+servlet+mysql 实现简单的银行登录转账功能

    jsp+servlet+mysql 实现简单的银行登录转账功能 [前期的准备] html(登录界面),servlet(处理业务逻辑),jsp(主要实现界面),mysql(实现与数据库的简单的交互)先从 ...

  7. 网页中插入QQ在线功能

    网页中插入QQ在线功能 本随笔记录的是网页中如何插入qq在线聊天,这里讲解的是 普通QQ在线聊天操作. 例:第一种方式  使用 tencent://message/?uin=QQ号码&Site ...

  8. UEditor编辑器和php简单的实现socket通信

    一.UEditor编辑器 使用这个编辑器是需要先下载编辑器文件,记得下载的时候放入自己的网站中,既然是php中使用,自然我下载的就是php的UEditor编辑器了,然后是utf-8的 其实使用很简单, ...

  9. android-使用环信SDK开发即时通信功能及源代码下载

    近期项目中集成即时聊天功能.挑来拣去,终于选择环信SDK来进行开发,选择环信的主要原因是接口方便.简洁.说明文档清楚易懂.文档有android.ios.和后台server端.还是非常全的. 环信官网: ...

随机推荐

  1. [Hadoop源码解读](一)MapReduce篇之InputFormat

    平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class);来保证输入文件按 ...

  2. C#中IDisposable学习

    在Net中,由GC垃圾回收线程掌握对象资源的释放,程序员无法掌控析构函数的调用时机.对于一些非托管资源,比如数据库链接对象等,需要实现IDisposable接口进行手动的垃圾回收.那么什么时候使用Id ...

  3. WordPress FunCaptcha插件跨站脚本漏洞

    漏洞名称: WordPress FunCaptcha插件跨站脚本漏洞 CNNVD编号: CNNVD-201311-431 发布时间: 2013-11-29 更新时间: 2013-11-29 危害等级: ...

  4. Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境

    偶然间看到Lua这种脚本语言,有点兴趣,简单学习了一下. 发现Lua与C++之间可以实现非常强的交互性.Lua中可以使用C++中的函数,C++中也可以使用Lua中的函数.由此可以引发出很多奇思妙想了. ...

  5. apache开源项目--Ignite

    Apache Ignite 内存数组组织框架是一个高性能.集成和分布式的内存计算和事务平台,用于大规模的数据集处理.Ignite 为应用和不同的数据源之间提供一个高性能.分布式内存中数据组织管理的框架 ...

  6. WCF大数据量传输配置

    WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...

  7. C# 获取word批注信息

    今天在Silverlight 应用程序中实现了 获取word文档批注信息 的功能. 在wcf服务继承接口类中编写的函数如下 /// <summary> /// 获取word批注信息 /// ...

  8. [Irving]SQL去重复-DISTINCT用法

    在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 distinct用于返回唯一不同的值. 表A: 示例1 select distinct nam ...

  9. vs2010的一个opencv插件

    调试时,可视化mat等图像 下载及使用地址: http://visualstudiogallery.msdn.microsoft.com/657956e4-8e02-4764-8022-72a0c9c ...

  10. 使用Windows Azure创建Linux系统虚拟机-下

    如何将数据磁盘附加到新虚拟机 您的应用程序可能需要存储数据.要这样设置,您可以将数据磁盘添加到先前创建的虚拟机.要做到这一点,最简单的方法是将空数据磁盘连接到本机. 在Linux上,磁盘资源通常由Az ...