winfrom 文件自动生成

数据页面展示

添加定时器执行每个表数据的生成计划
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:55fileContent += 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:55fileContent1 += 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; // 1000KYSSTimer.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;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构代码

文章目录 线性表的插入线性表的删除单链表的建立栈的顺序存储队列的顺序存储串的顺序存储树的存储二叉树遍历前序遍历中序遍历后序遍历 二分法插入排序利用普里姆算法构造最小生成树 线性表的插入 #a: 列表&#xff0c;pos: 要插入的位置&#xff0c;key: 要插入的数据&#x…

github搜索指令

in&#xff1a;根据某个关键词进行检索 关键词&#xff1a; name&#xff1a;项目名称 description&#xff1a;项目描述 readma&#xff1a;项目帮助文档 语法&#xff1a; 需要检索的内容&#xff1a;in:name或description或readme 单独使用: (1)例如&#xff1a;检索项目…

【STM32嵌入式系统设计与开发---拓展】——1_11_1串口通信(USART)

这里写目录标题 1、一般我们都怎么进行通信的&#xff1f;&#xff08;1&#xff09;串行通行&#xff08;Serial Communication&#xff09;&#xff08;2&#xff09;并行通信&#xff08;3&#xff09;无线网络通信&#xff08;4&#xff09;网络通信&#xff08;5&#xff…

Django [实战] 通过表单上传文件

在Django中上传文件通常涉及到以下几个步骤&#xff1a; 设置你的模型以包含一个FileField或ImageField&#xff08;如果上传的是图片&#xff09;。创建一个表单&#xff0c;该表单包含一个Form或ModelForm&#xff0c;其中包含一个FileField。在你的视图中处理上传的文件。在…

Modbus转BACnet/IP网关快速对接Modbus协议设备与BA系统

摘要 在智能建筑和工业自动化领域&#xff0c;Modbus和BACnet/IP协议的集成应用越来越普遍。BA&#xff08;Building Automation&#xff0c;楼宇自动化&#xff09;系统作为现代建筑的核心&#xff0c;需要高效地处理来自不同协议的设备数据&#xff0c;负责监控和管理建筑内…

可以免费合并pdf的软件 合并pdf文件的软件免费 合并pdf的软件免费

在数字化办公的今天&#xff0c;pdf格式因其稳定性和跨平台兼容性被广泛使用。然而&#xff0c;当我们需要将多个 pdf 文件合并为一个时&#xff0c;却往往感到力不从心。本文将为你介绍几款强大的pdf文件合并软件&#xff0c;让你轻松管理文档。 方法一、使用pdf转换器 步骤1…

使用Spring Boot实现居民身份证合法性验证

使用Spring Boot实现居民身份证合法性验证 在现代社会中&#xff0c;身份证号码的合法性验证是很多系统中不可或缺的一部分。身份证号码用于确认个人身份&#xff0c;其格式和校验机制各不相同。本文将介绍如何使用Spring Boot构建一个通用控制器&#xff0c;通过API来验证中国…

easyExcel和poi的版本对应

easypoi3.0.5对应的poi版本_easypoi和poi版本对应-CSDN博客 https://github.com/alibaba/easyexcel/blob/v3.2.0/pom.xml 解决 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错-CSDN博客 参考这个文档解决的- 引入最佳版本是3.15版本 java.lang.NoClas…

微服务:网关

网关 网关,即网络的关口,当一个网络传输到另一个网络时就需要经过网关来实现 数据的路由和转发 以及 数据安全的校验 网关技术实现 SpringCloudGateWay: 基于Spring的WebFlux技术,完全支持响应式编程,吞吐能力更强 SpringCloudGateWay 依赖 <!--网关--><depe…

【Rust光年纪】数据科学与机器学习:深入了解Rust语言中的6个关键库

Rust语言中的数据科学和机器学习&#xff1a;六大库全面解析 前言 随着Rust语言的不断发展&#xff0c;越来越多的优秀库和框架涌现出来&#xff0c;为不同领域的开发者提供了丰富的选择。本文将介绍一些适用于Rust语言的机器学习、数据处理和自然语言处理领域的优秀库和框架…

JAVA毕业设计152—基于Java+Springboot+vue+小程序的个人健康管理系统小程序(源代码+数据库+15000字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue小程序的个人健康管理系统小程序(源代码数据库15000字论文)152 一、系统介绍 本项目前后端分离带小程序(可以改为ssm版本)&#xff0c;分为用户、管理员两种…

Ubuntu下载jdk:cannot execute binary file

虚拟机上Ubuntu系统安装jdk且配置环境之后&#xff0c;java -version显示cannot execute binary file&#xff0c;多番查阅推测是由于系统和jdk版本不兼容的原因。 uname -m查看系统版本位i686&#xff0c;是32位的&#xff0c;和64位的jdk版本不兼容。因此&#xff0c;下载32位…

Postman与WebSockets:实时通信的桥梁

Postman与WebSockets&#xff1a;实时通信的桥梁 在当今的Web应用中&#xff0c;实时通信变得越来越重要。WebSockets提供了一种在单个连接上进行全双工通信的方法&#xff0c;允许服务器和客户端之间进行实时数据交换。Postman&#xff0c;作为一款强大的API开发和测试工具&a…

阻止 chrome “[保存并填写地址](chrome://settings/addresses)“ 导致输入框聚焦时出现候选项

参考 禁止浏览器自动填充到表单 的这个回答 代码 要求将不可见的input框放在页面的最前面&#xff0c;如body起始处&#xff0c; chrome之类的浏览器会填充最前面的输入框。 <!-- 阻止浏览器的自动填充 --> <input type"text" name"_prevent_auto_co…

[css3] 如何设置边框颜色渐变

div {border: 4px solid;border-image: linear-gradient(to right, #8f41e9, #578aef) 1; }参考&#xff1a; 5种CSS实现渐变色边框&#xff08;Gradient borders方法的汇总

【Python】探索 Python 中的 divmod 方法

为何每次早餐 仍然魂离魄散 原来 那朝分手都要啜泣中上班 明明能够过得这关 赢回旁人盛赞 原来 顽强自爱这样难 难得的激情总枉费 残忍的好人都美丽 别怕 你将无人会代替 &#x1f3b5; 陈慧娴《情意结》 在 Python 编程中&#xff0c;经常需要同时获取除…

如何通过smtp设置使ONLYOFFICE协作空间服务器可以发送注册邀请邮件

什么是ONLYOFFICE协作空间 ONLYOFFICE协作空间&#xff0c;是Ascensio System SIA公司出品的&#xff0c;基于Web的&#xff0c;开源的&#xff0c;跨平台的&#xff0c;在线文档编辑和协作的解决方案。在线Office包含了最基本的办公三件套&#xff1a;文档编辑器、幻灯片编辑…

FPGA实验1:简单逻辑电路

一、实验目的及要求 学习Create-SOPC实验平台的使用方法&#xff1b;熟悉Quartus II 软件平台和使用 VHDL 语言设计电路的方法&#xff1b;学习简单逻辑电路的设计、仿真和硬件测试。 二、实验原理 运用Quartus II 集成环境下的VHDL文本设计方法设计半加器&#xff0c;进行波…

LInux工具(2)

目录 1.关于底行模式的一个设置 1.1设置行号 1.2取消行号 2.简单vim配置 2.1简单认识 2.2配置选项 2.3其他说明 3.库的引入 3.1背景知识 3.2对应指令 3.3相关介绍 3.4.o文件和库的链接 3.5静态库的安装和测试 3.6动静态库对比 1.关于底行模式的一个设置 1.1设置行…

黑马点评-Postman卡住sending Requst原因解决

不知道为什么&#xff0c;用这个c1e1d5的token就会一直卡死&#xff0c;但是换了一个token就解决了&#xff0c;目前不知道为什么 解决了&#xff0c;原来是这个请求下面的函数发生了死循环&#xff01;&#xff01;太瓜皮了我超&#xff01; 把num写成了count&#xff0c;导…