C# Winfrom下如何实现定时显示数据库数据表

kudincha 2011-08-25 03:58:27
做一个实时监控程序,在C# winfrom下,目前想的方案是想利用datagridview实时显示SQL SERVER远程数据库信息,求问如何实现?有没有相关的实例代码,参考下。多谢各位大侠了!
...全文
321 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bodaowang 2011-08-26
  • 打赏
  • 举报
回复

private void FrmThawStateDisplay_Load(object sender, EventArgs e)
{
//显示数据库信息
this.timer1.Interval = 1000;
this.timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
//判断数据库信息是否变动,变动则重新显示数据库信息
if(变动)
{
}
}
skyaihuacai 2011-08-26
  • 打赏
  • 举报
回复
弄个线程行不行
qizhenzhanga 2011-08-26
  • 打赏
  • 举报
回复
直接用Timer控件,在Load事件中写,较好
weike021996 2011-08-26
  • 打赏
  • 举报
回复
timer
kudincha 2011-08-26
  • 打赏
  • 举报
回复
Re:lijun822205
非常感谢你!你的代码很详细,但是我不是很理解,该如何运用到实时显示数据库中,能否再细说下,麻烦了!
kudincha 2011-08-26
  • 打赏
  • 举报
回复
Re:bdmh
有没有用TIMER实时显示数据库数据的代码,我尝试过用TIMER控件,没成功!谢谢!
kudincha 2011-08-26
  • 打赏
  • 举报
回复
怎么判断数据库信息变动呢?
wp321310 2011-08-26
  • 打赏
  • 举报
回复
lijun822205 2011-08-25
  • 打赏
  • 举报
回复
常用属性
1.CancellationPending
指示应用程序是否已请求取消后台操作。
只读属性,默认为 false,当执行了 CancelAsync 方法后,值为 true。
2.WorkerSupportsCancellation
指示是否支持异步取消。要执行 CancelAsync 方法,需要先设置该属性为 true。

3.WorkerReportsProgress
指示是否能报告进度。要执行 ReportProgress 方法,需要先设置该属性为 true。
常用事件
1.DoWork
调用 RunWorkerAsync 方法时发生。

2.RunWorkerCompleted
后台操作已完成、被取消或引发异常时发生(操作完成时)。
3.ProgressChanged
调用 ReportProgress(bw.ReportProgress(value,state);) 方法时发生。
在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。
例子: #region 加载事件



private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.WorkerReportsProgress = true;//是否在异步操作里报告进度
backgroundWorker1.WorkerSupportsCancellation = true; //是否可以取消这个异步操作
}
#endregion

//开始backgroundworker异步处理
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(20);//
}
int index = 0;
//backgroundworker异步要调用的方法
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
BackgroundWorker bw = (BackgroundWorker)sender;
int count = Convert.ToInt32(e.Argument);//count为20

for (int i = 0; i < count; i++)
{
if (bw.CancellationPending)//bw.CancellationPending最后一次调用BackgroundWorker的方法是RunWorkerAsync(falser)还是CancelAsync(true),
{
return;
}
index++;
Thread.Sleep(1000);
bw.ReportProgress(index, e.Cancel);
}

e.Result = "成功";
}
catch (Exception)
{


}

}

//backgroundworker异步处理返回的进度
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.label1.Text = e.ProgressPercentage.ToString();
}

//backgroundworker异步处理完成过后的事件
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// MessageBox.Show(e.Error.Message);

MessageBox.Show(e.Result.ToString());
}
//取消backgroundworker异步处理
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
}

lijun822205 2011-08-25
  • 打赏
  • 举报
回复
楼上没有理解lz信息吧,别个要的是定时显示数据库数据信息,可以用一个后台线程或是用BackgroundWorker
常用属性
1.CancellationPending
指示应用程序是否已请求取消后台操作。
只读属性,默认为 false,当执行了 CancelAsync 方法后,值为 true。
2.WorkerSupportsCancellation
指示是否支持异步取消。要执行 CancelAsync 方法,需要先设置该属性为 true。

3.WorkerReportsProgress
指示是否能报告进度。要执行 ReportProgress 方法,需要先设置该属性为 true。
常用事件
1.DoWork
调用 RunWorkerAsync 方法时发生。

2.RunWorkerCompleted
后台操作已完成、被取消或引发异常时发生(操作完成时)。
3.ProgressChanged
调用 ReportProgress(bw.ReportProgress(value,state);) 方法时发生。
在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。
例子: #region 加载事件
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.WorkerReportsProgress = true;//是否在异步操作里报告进度
backgroundWorker1.WorkerSupportsCancellation = true; //是否可以取消这个异步操作
}
#endregion

//开始backgroundworker异步处理
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(20);//
}
int index = 0;
//backgroundworker异步要调用的方法
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
BackgroundWorker bw = (BackgroundWorker)sender;
int count = Convert.ToInt32(e.Argument);//count为20

for (int i = 0; i < count; i++)
{
if (bw.CancellationPending)//bw.CancellationPending最后一次调用BackgroundWorker的方法是RunWorkerAsync(falser)还是CancelAsync(true),
{
return;
}
index++;
Thread.Sleep(1000);
bw.ReportProgress(index, e.Cancel);
}

e.Result = "成功";
}
catch (Exception)
{


}

}

//backgroundworker异步处理返回的进度
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.label1.Text = e.ProgressPercentage.ToString();
}

//backgroundworker异步处理完成过后的事件
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// MessageBox.Show(e.Error.Message);

MessageBox.Show(e.Result.ToString());
}
//取消backgroundworker异步处理
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
}

代码如下
qldsrx 2011-08-25
  • 打赏
  • 举报
回复
sqlserver的话,就引入Microsoft.SqlServer.Smo.dll,它帮你快速展示所有数据库结构和修改,数据库版本问题都不用考虑了。(注:SQLSERVER2000和2005的获取数据库结构方法是不同的)
bdmh 2011-08-25
  • 打赏
  • 举报
回复
简单点就搞个timer

110,567

社区成员

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

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

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