定时器扫描数据库问题!!

tu_quan_ren 2009-05-22 07:17:52
我做了一个MyQQ的小项目,遇到了如下问题:
1.引入了一个计时器(tmrScanDataBase),让其定时扫描数据库,当有好友发来聊天消息时,启动另一个计时器(tmrFlicker)让该好友头像闪动。
2.问题来了,当tmrScanDataBase定时扫描数据库时,如果没查询出符合条件的结果时,就报错。
3.我想要的结果是,让tmrScanDataBase定时扫描数据库,没查出结果时,就继续扫描。有查询结果时,启动另一个计时器(tmrFlicker)。
4.有没有老师能帮帮忙!!我实在是有点黔驴技穷了!!

代码如下:

//定时扫描数据库,查看是否有"未读的" "普通聊天消息"
private void tmrScanDataBase_Tick(object sender, EventArgs e)
{
/*
* UserHelpper.HostId:当前登录的用户qq号
* messagestate:0未读,1已读
* messagetypeid:1普通聊天消息,2添加好友消息
*/
string sql = string.Format("select fromuserid from messages where touserid={0} and messagestate={1} and messagetypeid={2}", UserHelpper.HostId, 0, 1);

/*
* 这个地方要对查不到的情况,要拦截拦截一下,给出提示
*/
try
{
DBHelpper.connectionObj.Open();//打开数据库连接
SqlCommand commandObj = new SqlCommand(sql, DBHelpper.connectionObj);
friendId = (int)commandObj.ExecuteScalar();//只查看出一个,"来消息"的好友id


}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "数据库出错3", MessageBoxButtons.OK, MessageBoxIcon.Information);


}
finally
{


DBHelpper.connectionObj.Close();//关闭数据库连接



}

if (friendId!=0 )//查出来了
{

tmrFlicker.Enabled = true;
}



}



...全文
229 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tu_quan_ren 2009-05-23
  • 打赏
  • 举报
回复
我终于想到怎么解决了!!
1.之所以回报错是因为,没查询到结果,我使用了try{}catch(){}finally{}语句,来防止程序异常。
将catch语句内的消息框注释掉,就可以了。
2.这样就可以达到这样的效果了:
让tmrScanDataBase定时扫描数据库,没查出结果时,就继续扫描。有查询结果时,启动另一个计时器(tmrFlicker)
bbb332 2009-05-23
  • 打赏
  • 举报
回复
学习
up
tu_quan_ren 2009-05-23
  • 打赏
  • 举报
回复
报错是:1.连接未关闭,
2.未将对象引用设置到对象实例
zhushoudong 2009-05-22
  • 打赏
  • 举报
回复
你可以在数据库里面设置一个标识 当有新的消息的时候 那个标识就改变一下 然后你扫描就去读取标识就行了 这是其中的一种方法 还有就是你说的那个timer控件 定时去查看数据库就行了 如果是有数据的就执行你另外一个tiemr 没有的就跳出来就行了
gordonzzl 2009-05-22
  • 打赏
  • 举报
回复
报什么错了,是不是使用的语句有问题啊,换段试试

111,117

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧