刚做了一个QQ的即时聊天,还没修改完善,看看有没有帮助 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient;namespace MyQQ { public partial class ChatForm : Form { public static MainForm mainForm;
private int FromUserID = 10009;//发送信息的 id //即 好友的信息 和昵称 private int ToUserID = 10000;// 接受信息的id usrhelper.loginid //即 本人的信息 和昵称 public ChatForm() { InitializeComponent(); } public ChatForm(int fromUserID) { InitializeComponent(); this.FromUserID = fromUserID; } ///取消事件当点击是 关闭窗口 不发送信息 private void btnKExit_Click(object sender, EventArgs e) { this.Close(); } ///发送 事件 将 信息插入数据库 private void btnShow_Click(object sender, EventArgs e) { if (rtbToText.Text=="") { MessageBox.Show("不能发送空消息"); } else { int result=-1; string sql = string.Format("insert into Messages(FromUserId, ToUserId, Message, MessageTypeId, MessageState, MessageTime)values({0},{1},'{2}',1,0,'{3}')", FromUserID, ToUserID, this.rtbToText.Text, (DateTime.Now).ToString()); SqlCommand coom = new SqlCommand(sql,DBHelper.conn); DBHelper.conn.Open(); result = coom.ExecuteNonQuery(); DBHelper.conn.Close(); this.rtbToText.Clear(); // 常用语句选中后的 发送的显示 this.cboMess.SelectedIndex = 0; }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace MyQQ
{
public partial class ChatForm : Form
{
public static MainForm mainForm;
private int FromUserID = 10009;//发送信息的 id
//即 好友的信息 和昵称
private int ToUserID = 10000;// 接受信息的id usrhelper.loginid
//即 本人的信息 和昵称
public ChatForm()
{
InitializeComponent();
}
public ChatForm(int fromUserID)
{
InitializeComponent();
this.FromUserID = fromUserID;
}
///取消事件当点击是 关闭窗口 不发送信息
private void btnKExit_Click(object sender, EventArgs e)
{
this.Close();
}
///发送 事件 将 信息插入数据库
private void btnShow_Click(object sender, EventArgs e)
{
if (rtbToText.Text=="")
{
MessageBox.Show("不能发送空消息");
}
else
{
int result=-1;
string sql = string.Format("insert into Messages(FromUserId, ToUserId, Message, MessageTypeId, MessageState, MessageTime)values({0},{1},'{2}',1,0,'{3}')", FromUserID, ToUserID, this.rtbToText.Text, (DateTime.Now).ToString());
SqlCommand coom = new SqlCommand(sql,DBHelper.conn);
DBHelper.conn.Open();
result = coom.ExecuteNonQuery();
DBHelper.conn.Close();
this.rtbToText.Clear();
// 常用语句选中后的 发送的显示
this.cboMess.SelectedIndex = 0;
}
}
//id 的链接的“_”的 字符串
string messageIdStr=""; ///初始化 当窗体 打开的 时候加载信息
///
private void ChatForm_Load(object sender, EventArgs e)
{
// 常用语句的默认显示
this.cboMess.SelectedIndex = 0;
//读取 未读信息 并修改成已读
MessageShow();
}
/// 加入时间 信息 where 是否 已读 信息类型(好友) 接受的用户 和 发送的用户
///收存 ID 对消息的 状态进行 修改
private void MessageShow()
{
//调试中 类型 不再 搜索 语句 and MessageState=0
string sql = string.Format("select Id,Message, MessageTime from Messages where MessageTypeId=1and MessageState=0 and FromUserId={0} and ToUserId ={1}", ToUserID, FromUserID);
SqlCommand comm = new SqlCommand(sql, DBHelper.conn);
SqlDataReader dataReader; try
{
DBHelper.conn.Open();
dataReader = comm.ExecuteReader();
while (dataReader.Read())
{
//消息的id
messageIdStr = messageIdStr + Convert.ToString(dataReader["Id"]) + "_";
//消息的时间
string messageTime = Convert.ToDateTime(dataReader["MessageTime"]).ToString();
//消息的内容哦
string message = dataReader["Message"].ToString();
//消息的 输出
txtFriMess.Text = txtFriMess.Text + "\r\t"+"\r\n" + messageTime + "\r\n" + message;
}
dataReader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DBHelper.conn.Close();
} if (!(messageIdStr.Length < 1))
{
MessState(comm); // 修改 信息类型 }
}
///修改数据类型改成 已读
///
private void MessState(SqlCommand comm)
{ //将 id的尾部 “_” 去掉
messageIdStr.Remove(messageIdStr.Length - 1);
//将 id 装入字符串的 数组中
string[] messageIds = messageIdStr.Split('_');
// sql 语句
string sqlId = "update Messages set MessageState=1 where id=";
string updataSql;
//执行数据库的 命令
try
{
//数据库的链接方法
comm.Connection = DBHelper.conn;
DBHelper.conn.Open();
foreach (string id in messageIds)
{
if (id != "")
{
updataSql = sqlId + id;
//数据库 链接语句
comm.CommandText = updataSql;
//执行语句
int result = comm.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DBHelper.conn.Close();
}
}
/// 定时 刷新 聊天列表进行更改
///
private void tmrUpdate_Tick(object sender, EventArgs e)
{
int i =1;
i++;
string sql;//sql 语句
if ((i%1) ==0)
{
//好友发送的信息 到 本人处
sql = string.Format("select Id,Message, MessageTime from Messages where (MessageTypeId=1 or MessageTypeId=3)and MessageState=0 and FromUserId={0} and ToUserId ={1}", FromUserID, ToUserID);
}
else
{
// 本人发送的信息 到好友处
sql = string.Format("select Id,Message, MessageTime from Messages where(MessageTypeId=1 or MessageTypeId=3)and MessageState=0 and FromUserId={0} and ToUserId ={1}", ToUserID, FromUserID);
}
SqlCommand comm = new SqlCommand(sql, DBHelper.conn);
SqlDataReader dataReader; try
{
DBHelper.conn.Open();
dataReader = comm.ExecuteReader();
while (dataReader.Read())
{
//消息的id
messageIdStr = messageIdStr + Convert.ToString(dataReader["Id"]) + "_";
//消息的时间
string messageTime = Convert.ToDateTime(dataReader["MessageTime"]).ToString();
//消息的内容哦
string message = dataReader["Message"].ToString();
//消息的 输出
txtFriMess.Text = txtFriMess.Text +"\r\t"+ "\r\n" + messageTime + "\r\n" + message;
}
dataReader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
DBHelper.conn.Close();
}
if (!(messageIdStr.Length < 1))
{
MessState(comm); // 修改 信息类型
}
//检查 对方的抖动信息 MessageTypeId=3
//调用方法
JianChaDD(comm);
} }
}