C# Winfrom下如何实现定时显示数据库数据表 做一个实时监控程序,在C# winfrom下,目前想的方案是想利用datagridview实时显示SQL SERVER远程数据库信息,求问如何实现?有没有相关的实例代码,参考下。多谢各位大侠了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sqlserver的话,就引入Microsoft.SqlServer.Smo.dll,它帮你快速展示所有数据库结构和修改,数据库版本问题都不用考虑了。(注:SQLSERVER2000和2005的获取数据库结构方法是不同的) 楼上没有理解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(); }代码如下 常用属性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(); } Re:bdmh有没有用TIMER实时显示数据库数据的代码,我尝试过用TIMER控件,没成功!谢谢! Re:lijun822205非常感谢你!你的代码很详细,但是我不是很理解,该如何运用到实时显示数据库中,能否再细说下,麻烦了! 直接用Timer控件,在Load事件中写,较好 private void FrmThawStateDisplay_Load(object sender, EventArgs e) {//显示数据库信息 this.timer1.Interval = 1000; this.timer1.Start(); } private void timer1_Tick(object sender, EventArgs e) {//判断数据库信息是否变动,变动则重新显示数据库信息if(变动){} } 关于事务,速打速给分 一共三个整型变量a,b,c,用最简单的方法获取值最大的那个变量,注: 不是最大值是变量 关于返回自定类的数组格式 DataGridView DataGridViewLinkColumn 更改Text datatable表查询匹配的问题,急求 通过另一线程绑定DataGridview 无法显示纵滚动条 关于线程的问题,大家帮忙看看! 多个文本框数据保存 请教如何绘制这样一个图片 请教C#的Console.ReadLine()问题 WCF运行一段时间后,客户端无法正常连接,报错 关于GoogleTranslateAPI,高手来吧
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();
}代码如下
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();
}
有没有用TIMER实时显示数据库数据的代码,我尝试过用TIMER控件,没成功!谢谢!
非常感谢你!你的代码很详细,但是我不是很理解,该如何运用到实时显示数据库中,能否再细说下,麻烦了!
private void FrmThawStateDisplay_Load(object sender, EventArgs e)
{
//显示数据库信息
this.timer1.Interval = 1000;
this.timer1.Start();
} private void timer1_Tick(object sender, EventArgs e)
{
//判断数据库信息是否变动,变动则重新显示数据库信息
if(变动)
{
}
}