• 实现即时更新数据 反映在DataView或则DataGrid 在winform ·····



    用线程写了一个:

    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();
            }
        }
    }

     

  • 相关阅读:
    【java基础】(5)静态绑定和动态绑定
    Java的接口和抽象类
    【java基础】(3)Java继承内存分配
    【java基础】(2)Java父类与子类的 内存引用讲解
    [ECMAScript 6]学习小结之---模块
    CDN 内容分发网络
    移动前端开发之viewport的深入理解
    px em rem
    https 结合使用 对称加密和非对称加密
    java Queue中 remove/poll, add/offer, element/peek区别
  • 原文地址:https://www.cnblogs.com/Fooo/p/708473.html
Copyright © 2020-2023  润新知