首页 > 其他分享 >winfrom 文件自动生成

winfrom 文件自动生成

时间:2024-07-27 17:27:51浏览次数:14  
标签:string winfrom System 生成 item 自动 reader using public

数据页面展示

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

相关文章

  • 文件目录结构生成器
    ★代码importos#查询的路径search_path=r'C:\Users\damon\Desktop\目录生成器'#返回目录结构{"name":"目录生成器","child":[{"name":"目录生成器","child":[]}]}defget_files(root_path):#将路径处理为标准......
  • PHP 之腾讯云对象存储生成临时地址
    一、代码示例/***生成cos签名*@paramstring$httpURI你的url地址,如:https://xxxx.com/123/23/test.png*@paramstring$expires有效时间分钟*@paramstring$headerList*@paramstring$urlParamList*@paramstring$httpParameters*@paramstring$htt......
  • PWM波形生成
    背景方法定时器(1)高级定时器timer1,timer8以及通用定时器timer9,timer10,timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线(3)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时......
  • 基于宝塔面板的雨云自动签到shell脚本教程(亲测可用)
    第一步:雨云API获取    ①登录雨云用户后,鼠标移到用户头像    ②在出来的菜单中点击“账户设置”    ③在页面中找到左边一栏,点击“API密钥”    ④若之前没有使用过API密钥,右边的栏会是空的,那就点击右边橘黄色的“重新生成”按钮  ......
  • Android 12.0 framework层实现点击空白处自动隐藏输入法功能
    1.前言 在12.0的系统rom产品定制化开发中,在进行一些定制开发中,在某些无源码的app中,如果app中没实现点击空白区域外自动隐藏输入法功能的时候,那么就需要在系统framework层中进行相关功能的开发,接下来看下相关功能的实现2.framework层实现点击空白处自动隐藏输入法功能的核......
  • AI绘画入门实践 | Midjourney:使用 --iw 通过垫图生成头像
    在Midjourney中,--iw可以根据上传的图作为垫图,影响生成结果的构图、风格与颜色。使用格式:--iw0-2之间含1位小数的值数值越接近2:MJ参考图片的权重越大数值越接近0:MJ参考提示词的权重越大PS:使用--ar保持出图与原图的宽高一致,否则出图会被压缩或者拉伸使用演示......
  • SpringCloud Alibaba - nacos服务自动注册流程
    在SpringCloudAlibaba中,Nacos服务自动注册流程大致遵循以下步骤:依赖集成:首先,通过在项目的pom.xml文件中添加spring-cloud-starter-alibaba-nacos-discovery依赖,将Nacos服务发现功能集成到SpringBoot应用中。配置文件设置:在application.properties或application.yml中......
  • 逍遥情缘全自动搬砖挂机项目
    一、游戏概述《逍遥情缘》是一款提供全自动游戏搬砖体验的网络游戏。玩家可以通过游戏内的自动化脚本,实现高效的游戏进程推进和资源获取。二、项目特色全自动操作:游戏脚本智能化,实现全程辅助自动操作,减少玩家手动操作的负担。稳定收益:单窗口日收益可达40+,为玩家提供持续的......
  • 逍遥情缘全自动搬砖挂机项目
    一、游戏概述《逍遥情缘》是一款提供全自动游戏搬砖体验的网络游戏。玩家可以通过游戏内的自动化脚本,实现高效的游戏进程推进和资源获取。二、项目特色全自动操作:游戏脚本智能化,实现全程辅助自动操作,减少玩家手动操作的负担。稳定收益:单窗口日收益可达40+,为玩家提供持续的......
  • 逍遥情缘全自动搬砖挂机项目
    一、游戏概述《逍遥情缘》是一款提供全自动游戏搬砖体验的网络游戏。玩家可以通过游戏内的自动化脚本,实现高效的游戏进程推进和资源获取。二、项目特色全自动操作:游戏脚本智能化,实现全程辅助自动操作,减少玩家手动操作的负担。稳定收益:单窗口日收益可达40+,为玩家提供持续的......