数据页面展示
添加定时器执行每个表数据的生成计划
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using System.Data.SqlClient; // 连接数据客户端 // 命名空间在这里 namespace file_upload { public partial class From1 : Form { // 自己定义的类,在这里是获取数据库里面返回的数据 private DatabaseAccess dbAccess = new DatabaseAccess(); // 定义成全局的,然后改变某一个属性就行好 private Timer GDSSTimer;// 添加一个定时器 private Timer KYSSTimer; // 换成自己的数据 这要加一个转义字符 private string connectionString = "Data Source=MOGFPLQEEJOTGON\\SQLEXPRESS;Initial Catalog=hm_dataaccess;User ID=frank;Password=root123"; private string pathTime; private string titleTime; // 这个是 program 来调用的顺序 public From1() { // 初始化窗口里面的全部的控件 InitializeComponent(); GDSSTimers(); // 然后再开启定时任务 供电实时信息 KYSSTimers(); // 空压机实时信息 } private void CDSS_data(object sender, EventArgs e) { formatString(out pathTime, out titleTime); // 这里写好条件在执行sql 的时候要给这个变量添加具体的数据 string query = "SELECT * FROM data_GDSS"; // 生成一个集合类的对象 var collection = dbAccess.GetCollectionByField<GDSS>(connectionString, query, MapFunction); string filePath = @"C:\exchange\360981021073_GDSS_" + pathTime + ".txt"; // 指定文件路径 string fileContent = "360981021073;流舍煤矿;" + titleTime + "~"; // 文件内容 foreach (GDSS item in collection) { //MessageBox.Show(item.print()); // 在盒子中打印一下数据 // 36098102107351MN36101001000000000011;36101;电压;3609810210730051000001;27.25;V;0;2024-071513:58:55 fileContent += item.cdcode + ";" + item.cdtypecode + ";" + item.cdtypename + ";" + item.sbcode + ";" + item.cdvalue + ";" + item.dw + ";" + item.cdstatus + ";" + titleTime + "~"; } fileContent += "||"; // 最后在文件的结尾添加一个结束的符号 try { // 确保文件目录存在 var directory = Path.GetDirectoryName(filePath); // 如果没有目录就重新生成一个 if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } // 写入指定的字符写入到txt中来 File.WriteAllText(filePath, fileContent); //MessageBox.Show("文件生成成功!"); } catch (Exception ex) { // 这里站位符没有起到作用 MessageBox.Show("生成文件时发生错误: {0}", ex.Message.ToString()); } } // KYSS 数据生成事件 private void KYSS_data(object sender, EventArgs e) { formatString(out pathTime, out titleTime); string kyss = "SELECT * FROM data_KYSS"; var kyssList = dbAccess.GetCollectionByField<KYSS>(connectionString, kyss, KyssList); string filePath1 = @"C:\exchange\360981021073_KYSS_" + pathTime + ".txt"; string fileContent1 = "360981021073;流舍煤矿;" + titleTime + "~"; foreach (KYSS item in kyssList) { //MessageBox.Show(item.print()); // 在盒子中打印一下数据 // 36098102107351MN36101001000000000011;36101;电压;3609810210730051000001;27.25;V;0;2024-071513:58:55 fileContent1 += item.cdcode + ";" + item.cdtypecode + ";" + item.cdtypename + ";" + item.sbcode + ";" + item.cdvalue + ";" + item.dw + ";" + item.cdstatus + ";" + titleTime + "~"; } fileContent1 += "||"; try { // 确保文件目录存在 var directory = Path.GetDirectoryName(filePath1); // 如果没有目录就重新生成一个 if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } // 写入指定的字符写入到txt中来 File.WriteAllText(filePath1, fileContent1); //MessageBox.Show("文件生成成功!"); } catch (Exception ex) { // 这里站位符没有起到作用 MessageBox.Show("生成文件时发生错误: {0}", ex.Message.ToString()); } } /// <summary> /// 将日期转化为我们需要的格式 /// </summary> /// <param name="pathTime">yyyyMMddHHmmss</param> /// <param name="titleTime">yyyy-MM-dd HH:mm:ss</param> private static void formatString(out string pathTime, out string titleTime) { // 不管几个文件时间都是共用的,这一点没有变化的 DateTime nowtime = DateTime.Now; //获取当前的时间 pathTime = nowtime.ToString("yyyyMMddHHmmss");// 路径文件的名字 titleTime = nowtime.ToString("yyyy-MM-dd HH:mm:ss");// 文件标题的名字 } // 给每一个记录添加数据 // 这里是委托来算出每一个对象参数的值 private GDSS MapFunction(SqlDataReader reader) { // 根据你的数据表结构,创建和返回你的数据对象 return new GDSS { // 符号出问题呢 id = (int)reader["id"], cdcode = reader["cdcode"] as string, cdtypecode = reader["cdtypecode"] as string, // 测点类型编码 cdtypename = reader["cdtypename"] as string ,// 测点类型名称 sbcode = reader["sbcode"] as string, // 设备编码 cdvalue = reader["cdvalue"] as string, // 实时数据 dw = reader["dw"] as string, // 单位 cdstatus = (int) reader["cdstatus"], // 测点状态 datatime = reader["datatime"] as string, // 写入时间 uploadtime = reader["uploadtime"] as string // 上传时间 }; } /// <summary> /// 读取完数据的添加 /// </summary> /// <param name="reader">数据读取器 </param> /// <returns></returns> private KYSS KyssList(SqlDataReader reader) { // 根据你的数据表结构,创建和返回你的数据对象 return new KYSS { // 符号出问题呢 id = (int)reader["id"], cdcode = reader["cdcode"] as string, cdtypecode = reader["cdtypecode"] as string, // 测点类型编码 cdtypename = reader["cdtypename"] as string,// 测点类型名称 sbcode = reader["sbcode"] as string, // 设备编码 cdvalue = reader["cdvalue"] as string, // 实时数据 dw = reader["dw"] as string, // 单位 cdstatus = (int)reader["cdstatus"], // 测点状态 datatime = reader["datatime"] as string, // 写入时间 uploadtime = reader["uploadtime"] as string // 上传时间 }; } // 定义定时器来处理我们要想处理的事件 private void GDSSTimers() { // 创建Timer实例 事件源 GDSSTimer = new Timer(); // 设置定时器间隔(例如,2000毫秒) GDSSTimer.Interval = 1000 * 60; // 设置定时器事件处理程序 GDSSTimer.Tick += new EventHandler(CDSS_data);//这里的事件是我们自己定义的 // 启动定时器 GDSSTimer.Start(); } private void KYSSTimers() { // 创建Timer实例 事件源 KYSSTimer = new Timer(); // 设置定时器间隔(例如,2000毫秒) KYSSTimer.Interval = 1000 * 60; // 设置定时器事件处理程序 KYSSTimer.Tick += new EventHandler(KYSS_data);// // 启动定时器 KYSSTimer.Start(); } /// <summary> /// 设置定时器的执行时间 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { string time = comboBox1.Text;// 获取选中文本的信息 int sec = Convert.ToInt32(time); GDSSTimer.Interval = sec * 1000; // 1000 KYSSTimer.Interval = sec * 1000; // 1000 } } }
连接数据库,读取数据到list中
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; // 添加数据连接对象 namespace file_upload { /// <summary> /// 这是我们自己定义的一共工具类啊 /// </summary> class DatabaseAccess { public List<T> GetCollectionByField<T>(string connectionString, string sql, Func<SqlDataReader, T> mapFunction) { var results = new List<T>(); // 定义一个集合来返回数据 using (var connection = new SqlConnection(connectionString)) // 要连接的数据库 { using (var command = new SqlCommand(sql, connection)) // 创建执行终端 { //command.Parameters.AddWithValue("@value", value); // 在执行具体的sql语句要添加相应的参数 connection.Open(); // 打开连接 using (SqlDataReader reader = command.ExecuteReader()) // 读取数据库里面的数据 { while (reader.Read()) { // 将一条数据添加到集合里面 results.Add(mapFunction(reader)); } } connection.Close(); } } return results; } } }
供电实时信息类
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace file_upload { // 供电实时信息类 class GDSS { public Int32 id { set; get; } // 主键唯一的 public string cdcode { set; get; } // 测点编码 public string cdtypecode { set; get; } // 测点类型编码 public string cdtypename { set; get; } // 测点类型名称 public string sbcode { set; get; } // 设备编码 public string cdvalue { set; get; } // 实时数据 public string dw { set; get; } // 单位 public Int32 cdstatus { set; get; } // 测点状态 public string datatime { set; get; } // 写入时间 public string uploadtime { set; get; } // 上传时间 // 测试有没有从数据库中读取到数据 public string print() { return "id = " + id + " cdcode = " + cdcode + " cdtypecode = " + cdtypecode + " cdtypename = " + cdtypename + " sbcode = " + sbcode + " cdvalue = " + cdvalue + " dw = " + dw + " cdstatus = " + cdstatus + " datatime = "+ datatime + " uploadtime = " + uploadtime; } } }标签:string,winfrom,System,生成,item,自动,reader,using,public From: https://blog.csdn.net/weixin_42376775/article/details/140621874