winfrom 文件自动生成

news2024/9/20 0:55:42
数据页面展示

添加定时器执行每个表数据的生成计划
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;
        }
    }
}

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

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

相关文章

qt中charts图表的使用方法

折线图 #include "widget.h" #include "ui_widget.h" #include <QtCharts/QChart> #include <QtCharts/QChartView> #include <QtCharts/QLineSeries> #include<QVBoxLayout>Widget::Widget(QWidget *parent): QWidget(parent), …

知识图谱 | 基于电商网站中的商品分类目录构建知识图谱

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在构建一个基于电商网站商品分类目录的知识图谱&#xff0c;通过Python程序爬取分类信息&#xff0c;形成商品的目录树&#xff0c;并提取底层商品的概念信息。项目将重点展示如何利用知识图谱呈现概念层级知识&#xf…

等保测评练习卷17

等级保护初级测评师试题17 姓名&#xff1a; 成绩&#xff1a; 判断题&#xff08;10110分&#xff09; 1. 关于安全区域边界的安全审计&#xff0c;三级系统的要求包括应对审计进程进行保护&#x…

Java实现分卷压缩功能,不引入第三方依赖的实现方式

分卷压缩 分卷压缩是一种将一个大文件分割成多个较小文件的压缩方法。这种方法通常用于便于存储、传输或备份大文件。分卷压缩的主要特点和步骤包括: 分割大文件:将一个大文件分割成多个较小的文件,每个小文件称为一个“分卷”。压缩分卷:对每个分卷进行压缩,以减少每个分…

【复习】软件工程

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现&#xff1a; 开发成本和进度的估计常常很不准确 用户对已完成的软件系统不满意&#xff0c;闭门造车 软件质量&#xff08;quality&#xff09;不可靠 软件常常是不可维护的 软件产品供不应…

java的DOS命令

目录 1.DOS命令了解 DOS介绍 常用的dos命令1 DOS的基本原理 相对路径与绝对路径 常用的dos命令2 2.本章作业 1.编写hello&#xff0c;world程序 2.输出个人基本信息 3.jdk&#xff0c;jre&#xff0c;jvm关系 4.环境变量path配置及作用 5.java编写步骤 6.java编写7…

14、如何⽤DDD设计微服务代码模型

在完成领域模型设计后&#xff0c;接下来我们就可以开始微服务的设计和 落地了。在微服务落地前&#xff0c;⾸先要确定微服务的代码结构&#xff0c;也就是我 下⾯要讲的微服务代码模型。 只有建⽴了标准的微服务代码模型和代码规范后&#xff0c;我们才可以将 领域对象映射到…

C#初级——输出语句和转义字符

输出语句 在C#中&#xff0c;C#的输出语句是通过Console类进行输出&#xff0c;该类是一个在控制台下的一个标准输入流、输出流和错误流。使用该类下的Write()函数&#xff0c;即可打印要输出的内容。 Console.Write("Hello World!"); //在控制台应用中打印Hell…

websocket状态机

websocket突破了HTTP协议单向性的缺陷&#xff0c;基于HTTP协议构建了双向通信的通道&#xff0c;使服务端可以主动推送数据到前端&#xff0c;解决了前端不断轮询后台才能获取后端数据的问题&#xff0c;所以在小程序和H5应用中被广泛使用。本文主要集合报文分析对于websocket…

Python 机器学习求解 PDE 学习项目——PINN 求解一维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络&#xff08;PINN&#xff09;求解一维 Poisson 方程: − Δ u f in Ω , u 0 on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & 0 \quad & \text{on } \Gamma:\partial \Om…

2024.7.22(nfs、samba)

一、web_server作用是发布nginx的web项目 1、停用selinux关闭防火墙 [rootnfs_server ~]# setenforce 0 [rootnfs_server ~]# vim /etc/selinux/config [rootnfs_server ~]# systemctl stop firewalld [rootnfs_server ~]# systemctl disable firewalld 2、安装nginx [rootwe…

四、GD32 MCU 常见外设介绍 (4) EXTI 中断介绍

4.EXTI 中断介绍 EXTI(中断/事件控制器)包含多个相互独立的边沿检测电路并且能够向处理器内核产生中断请求或唤醒事件。 EXTI 有三种触发类型&#xff1a;上升沿触发、下降沿触发和任意沿触发。 EXTI中的每一个边沿检测电路都可以独立配置和屏蔽。 4.1.GD32 EXTI 外设原理简介…

Nginx Rewrite(企业网站架构部署与优化)

Nginx Rewrite介绍 本章结构 实验步骤&#xff1b; 先在服务器1上写三个location&#xff1b;且等级各不相同&#xff1b; 如下&#xff1b;先将之前的location注释掉&#xff0c;避免冲突&#xff1b; 重启服务后生效&#xff1b; 如果用户输入的域名后只加了一个/或/都没有…

深入浅出C语言指针(进阶篇)

深入浅出C语言指针(基础篇) 深入浅出C语言指针(进阶篇) 目录 引言 一、指针和数组 1.数组名的理解 2.指针访问数组 3.一维数组传参的本质 二、二级指针 1.二级指针的概念 2.二级指针的内存表示 3.二级指针的解引用 三、字符指针 1.指针指向单个字符 2.指针指向字…

JavaWeb(4)JavaScript入门2—— JS的对象和JSON

一、JS的对象 1.声明语法1 通过new Object()直接创建对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…

Linux——vi和vim编辑器

目录 基本介绍 vi和vim常用的三种模式 vi和vim的常用快捷键 基本介绍 vi和vim常用的三种模式 vi和vim的常用快捷键 网上找的快捷键盘图

docker搭建ES 8.14 集群

参考&#xff1a;【docker搭建es8集群kibana】_docker 安装生产级 es 8.14 集群-CSDN博客 1、之前已搭建一台单机版的dockerES集群 参见 Elasticsearch docker 安装_docker 安装es8.14.3-CSDN博客 2、现在需要重新搭建为docker ES集群 准备新搭建3个点 一、准备工作 提前开…

txt格式单词导入有道词典生词本 (java代码方式)

txt格式单词导入有道词典生词本 (java代码方式) 首先要求txt文档里单词的格式&#xff0c;大概需要像这种&#xff1a; 每行是一个单词&#xff0c;格式为&#xff1a;英文单词空格词性单词意思。 注意 导出单词本的名字就是你 txt 文件的名字 我这里是 公共英语三级 单词本 …

WPF项目实战视频《二》(主要为prism框架)

14.prism框架知识&#xff08;1&#xff09; 使用在多个平台的MVVM框架 新建WPF项目prismDemo 项目中&#xff1a;工具-NuGet包管理&#xff1a;安装Prism.DryIoc框架 在git中能看Prism的结构和源代码&#xff1a;git链接地址 例如&#xff1a;Prism/src/Wpf/Prism.DryIoc.Wpf…

Linux中tomcat下载教程

一.安装tomcat 1.安装 EPEL 仓库&#xff1a; sudo yum install epel-release2.安装 Tomcat&#xff1a; sudo yum install tomcat3.启动 Tomcat 服务&#xff1a; sudo systemctl start tomcat4.启用 Tomcat 服务开机启动&#xff1a; sudo systemctl enable tomcat5.检查…