21.7 客户的新需求
到此为止,在线聊天系统已经设计完毕了,但是此时客户希望本系统内能有多个聊天室,这样能便于用户有选择性地进行沟通。也就是说做成与QQ类似的聊天系统,进入系统后有多个房间可以进入,即根据不同的用户群体设置对应的聊天室。
根据上述新需求,首先需要在数据库新添加一个表,用于存储聊天室房间的信息。系统聊天室信息表“Chat”的具体设计结构如表21-3所示。
表21-3 系统聊天室信息表(Chat)
字 段 名 称 |
数 据 类 型 |
是 否 主 键 |
默 认 值 |
功 能 描 述 |
---|---|---|---|---|
ID |
int |
是 |
递增1 |
编号 |
ChatName |
varchar(50) |
否 |
Null |
名称 |
MaxNumber |
int |
否 |
Null |
允许最多在线人数 |
CurrentNumber |
int |
否 |
Null |
当前在线的人数 |
Status |
tinyint |
否 |
Null |
状态 |
CreateDate |
datetime |
否 |
Null |
时间 |
Remark |
varchar(1000) |
否 |
Null |
说明 |
修改数据访问层——聊天室房间处理
在文件chat.cs中,与聊天室房间处理模块相关的是方法GetLiaotian(),其运行流程如图21-7所示。
图21-7 登录验证模块数据访问层运行流程图
方法GetLiaotian()的功能是获取当前系统中所有的聊天室信息,其具体实现过程如下。
(1)从系统配置文件Web.config中获取数据库连接参数,并将其保存在connectionString中。
(2)使用连接字符串创建con对象,实现数据库连接。
(3)新建获取数据库中所有聊天室信息的SQL查询语句。
(4)创建获取数据的对象da。
(5)打开数据库连接,获取查询数据。
(6)将获取的查询结果保存在ds中,并返回ds。
上述功能的对应实现代码如下。
public DataSet GetLiaotian()
{
string connectionString = ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].Connection String;
SqlConnection con = new SqlConnection(connectionString);
//创建SQL语句
string cmdText = "SELECT * FROM Chat Order by CurrentNumber DESC";
//创建SqlDataAdapter
SqlDataAdapter da = new SqlDataAdapter(cmdText,con);
//定义DataSet
DataSet ds = new DataSet();
try
{
con.Open();
//填充数据
da.Fill(ds,"DataTable");
}
catch(Exception ex)
{
throw new Exception(ex.Message,ex);
}
finally
{
con.Close();
}
return ds;
}
上述过程体现了模块化设计的好处。在客户要求改变系统时,原来编写的代码可以保持不变,只编写新功能代码即可。这样可以大大提高开发效率。接下来开始聊天室显示界面的设计工作。