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