实现即时更新数据 反映在DataView或则DataGrid 在winform ·····
Posted on 2007-04-11 10:57 且行且思 阅读(1830) 评论(1) 编辑 收藏 举报
用线程写了一个:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Threading;
using System.Data.SqlClient;
namespace TestForm
{
public partial class Form1 : Form
{
//定义一个变量,用于关闭线程
private bool flag;
//定义一个线程
private Thread thread;
//定义一个委托
public delegate void MyInvoke(DataSet ds);
public Form1()
{
InitializeComponent();
flag = true;
thread = new Thread(new ThreadStart(threadProc));
thread.Start();
}
//线程回调函数
private void threadProc()
{
while (flag)
{
//三秒种一次
DataBind();
Thread.Sleep(3000);
}
}
//操作DataGridView
private void BindDataGridView(DataSet ds)
{
this.dataGridView1.DataSource = ds.Tables["student"];
}
//从数据库中取出数据,并绑定
private void DataBind()
{
SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
try
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from studentInfor", con);
DataSet ds = new DataSet();
sda.Fill(ds, "student");
//this.dataGridView1.DataSource = ds.Tables["student"];
//绑定数据到DataGridView
MyInvoke mi = new MyInvoke(BindDataGridView);
this.BeginInvoke(mi, new object[] { ds });
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
//测试,添加一条数据,看隔一段时间后,能否取上来..
SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
try
{
con.Open();
SqlCommand cmd = new SqlCommand("insert into studentInforvalues('1111111','test')", con);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//关闭前先关闭线程
flag = false;
thread.Join();
}
}
}
//======================================
再用Timer写一个:
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;
using System.Threading ;
namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//设置间隔,启动Timer
this.timer1.Interval = 3000;
this.timer1.Enabled = true;
}
//从数据库中取出数据,并绑定
private void DataBind()
{
SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
try
{
con.Open();
SqlDataAdapter sda = new SqlDataAdapter("select * from studentInfor", con);
DataSet ds = new DataSet();
sda.Fill(ds, "student");
this.dataGridView1.DataSource = ds.Tables["student"];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
//测试,添加一条数据,看隔一段时间后,能否取上来..
SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
try
{
con.Open();
SqlCommand cmd = new SqlCommand("insert into studentInfor values('1111111','test')", con);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
//每隔三秒,响应一次
DataBind();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端