using MySql.Data.MySqlClient;
using System;
using System.Data;
using System.Threading;
using System.Windows.Forms;

namespace DataGirdView
{
public partial class Form1 : Form
{
Thread myThread;
string DBConnationstring = "数据库连接";
MySqlCommand cmd;
MySqlConnection con;
MySqlDataAdapter msda;
public int frequency = 0;//更新时间频率
public static bool isUse = false;//是否停止更新
public static string statusInfo = string.Empty;//状态
private delegate void myDelegate(DataTable dt);//定义委托
public Form1()
{
InitializeComponent();
label2.Text = "更新频率为:" + (trackBar1.Value / 1000).ToString() + "秒";
}

private void Form1_Load(object sender, EventArgs e)
{
myThread = new Thread(startFillDv);//实例化线程
myThread.Start();

}

private void startFillDv()
{
while (true)
{
if (isUse)
{
statusInfo = "正在实时更新数据......";
DataTable dt = getdata("select * from orderimpoert");//自己写的数据封装类 能够返回一个datatable
Grid(dt);
Thread.Sleep(frequency);
}
else
{
statusInfo = "停止更新!";
}
}

}

private void Grid(DataTable dt)
{
if (this.InvokeRequired)
{
this.Invoke(new myDelegate(Grid), new object[] { dt });
}
else
{
try
{
this.dataGridView1.DataSource = null;
this.dataGridView1.DataSource = dt;
dt = null;
statusInfo = "更新完成!";
}
catch
{

}
}

}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.myThread.IsAlive)
{
this.myThread.Abort();//结束线程
}
}

private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = statusInfo;
frequency = trackBar1.Value;
if (statusInfo.Trim() == "正在实时更新数据......")
{
pictureBox1.Visible = true;
}
else
{
pictureBox1.Visible = false;
}

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
isUse = true;
}
else
{
isUse = false;
}

}

private void trackBar1_Scroll(object sender, EventArgs e)
{
label2.Text = "更新频率为:" + (trackBar1.Value / 1000).ToString() + "秒";
}
public DataTable getdata(string sql)
{

try
{
con = new MySqlConnection(DBConnationstring);
con.Open();
cmd = new MySqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
DataTable dt = new DataTable();
msda = new MySqlDataAdapter(cmd);
msda.Fill(dt);
con.Close();
con.Dispose();
return dt;
}
catch (Exception ex)
{
con.Close();
con.Dispose();
return null;
}
}
public int ExecSql(string sql)
{
int a = 0;
try
{
con = new MySqlConnection(DBConnationstring);
con.Open();
cmd = new MySqlCommand(sql, con);
a = cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
return a;
}
catch (Exception)
{
con.Close();
con.Dispose();
return -1;
}
}
}
}

-----------------------------------------------------------------------------------------

源码:https://files-cdn.cnblogs.com/files/Zingu/DataGirdView.rar

最新文章

  1. Leetcode: Surrounded regions
  2. CHARINDEX
  3. html5 canvas雨点打到窗玻璃动画
  4. iOS 中的frame,bounds,center,transform关联
  5. Android进阶笔记08:Android 中Activity、Window和View之间的关系
  6. java 执行sql脚本的3种方式 (ant,ibatis,ScriptRunner)
  7. Web通信中的Get、Post方法
  8. thinkphp3.2.2前后台公用类架构问题
  9. 【笔记】Linux 和 Unix 作业控制
  10. 自定义tableviewCell的分割线
  11. Git使用过程
  12. Visual formatting model 可视化格式模型
  13. JavaScript ECMAScript版本介绍
  14. 【JAVA】高并发优化细节点
  15. classic code review
  16. 一点感悟:《Node.js学习笔记》star数突破1000+
  17. android 平台 java和javascript 通信问题 A WebView method was called on thread 'JavaBridge'.
  18. Tarjan 强连通分量 及 双联通分量(求割点,割边)
  19. Java基础之—反射
  20. LInux上返回到切换目录前的目录

热门文章

  1. Ubuntu下跑通py-faster-rcnn、详解demo运作流程
  2. Next.js SSR Tutorials
  3. 使用 js 实现十大排序算法: 计数排序
  4. VSCode & SQL
  5. yarn & macOS & upgrade
  6. DMCA Takedown Policy
  7. GitHub Actions
  8. qt DateTime 计算时间
  9. C++算法代码——三连击[NOIP1998 普及组]
  10. 24_MySQL插入insert语句