用線程寫了一個:
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();
}
}
}