当前位置: 首页 > news >正文

【C#】不需要连接数据库使用 ADO.NET 实现数据绑定

如果想从 文本文件(TXT 文件) 中读取格式化的数据并将其绑定到控件(如 DataGridView)中,可以采用类似 ADO.NET 的数据绑定机制,但不需要连接数据库。相反,我们可以手动读取文件中的数据并将其加载到内存中的数据结构(如 DataTableList),然后将其绑定到控件。

1. 场景描述

假设我们有一个简单的文本文件,包含员工信息,每行代表一个员工的数据,格式如下(逗号分隔):

1,John Doe,Manager
2,Jane Smith,Developer
3,Sam Brown,Analyst

这表示员工的 ID、姓名、职位,我们将读取该文件并将其显示在 DataGridView 中。

2. 使用 DataTable 来绑定文本文件中的数据

我们可以将文本文件中的数据解析成一个 DataTable,然后将 DataTable 绑定到 DataGridView 控件中显示。

3. 代码实现步骤

1. 创建一个表结构来存储数据

我们使用 DataTable 来存储解析后的数据,DataTable 是一种可以用来存储表格数据的结构,适合绑定到 DataGridView

2. 读取文本文件并填充 DataTable

我们将逐行读取文件内容,并将每行解析成不同的列。

3. 绑定 DataTableDataGridView

最后,我们将 DataTable 绑定到 DataGridView 控件中来显示数据。

4. 代码实现

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;public partial class MainForm : Form
{private DataTable dataTable;public MainForm(){InitializeComponent();LoadDataFromTextFile(@"C:\path_to_your_file\employees.txt");}// 加载文本文件中的数据到 DataTableprivate void LoadDataFromTextFile(string filePath){// 初始化 DataTable 并添加列dataTable = new DataTable();dataTable.Columns.Add("EmployeeID", typeof(int));dataTable.Columns.Add("Name", typeof(string));dataTable.Columns.Add("Position", typeof(string));// 读取文件内容try{using (StreamReader reader = new StreamReader(filePath)){string line;while ((line = reader.ReadLine()) != null){// 分割行中的数据 (假设逗号分隔)string[] fields = line.Split(',');// 将解析的数据添加到 DataTable 中if (fields.Length == 3){DataRow row = dataTable.NewRow();row["EmployeeID"] = int.Parse(fields[0]);   // IDrow["Name"] = fields[1];                    // 姓名row["Position"] = fields[2];                // 职位dataTable.Rows.Add(row);}}}// 将 DataTable 绑定到 DataGridViewdataGridView1.DataSource = dataTable;}catch (Exception ex){MessageBox.Show($"读取文件时发生错误: {ex.Message}");}}
}

5. 代码解释

1. DataTable 的初始化
dataTable = new DataTable();
dataTable.Columns.Add("EmployeeID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Position", typeof(string));
  • 创建了一个 DataTable 对象,并定义了三列:EmployeeID(整数类型)、Name(字符串类型)和 Position(字符串类型)。
  • 这个表格结构将用于存储从文本文件中解析出来的员工数据。
2. 读取文本文件
using (StreamReader reader = new StreamReader(filePath))
{string line;while ((line = reader.ReadLine()) != null){string[] fields = line.Split(',');if (fields.Length == 3){DataRow row = dataTable.NewRow();row["EmployeeID"] = int.Parse(fields[0]);row["Name"] = fields[1];row["Position"] = fields[2];dataTable.Rows.Add(row);}}
}
  • 使用 StreamReader 来逐行读取文本文件中的内容。
  • 每行数据通过 Split(',') 分割成字符串数组,数组的每个元素对应员工的 ID、姓名和职位。
  • 然后我们创建一个新的 DataRow,并将解析的数据存储到表格的相应列中,最后将 DataRow 添加到 DataTable 中。
3. 数据绑定
dataGridView1.DataSource = dataTable;
  • 将填充好的 DataTable 绑定到 DataGridView,这样数据就会自动显示在界面上的表格中。
4. 异常处理

我们使用 try-catch 来捕获文件读取中的异常,并在读取出错时显示消息框。

6. 运行结果

当你运行这个应用时,DataGridView 将显示文本文件中的所有员工信息,如下所示:

EmployeeIDNamePosition
1John DoeManager
2Jane SmithDeveloper
3Sam BrownAnalyst

你还可以在 DataGridView 中编辑数据,或根据需求进一步扩展功能,比如保存修改的内容回到文件。

7. 拓展:保存数据回到文本文件

如果你希望用户在 DataGridView 中编辑数据后,将修改保存回文本文件,你可以实现类似如下的保存功能:

private void SaveDataToFile(string filePath)
{try{using (StreamWriter writer = new StreamWriter(filePath, false)){foreach (DataRow row in dataTable.Rows){writer.WriteLine($"{row["EmployeeID"]},{row["Name"]},{row["Position"]}");}}MessageBox.Show("数据保存成功!");}catch (Exception ex){MessageBox.Show($"保存数据时发生错误: {ex.Message}");}
}
  • 通过 StreamWriter,逐行将 DataTable 中的数据写回到文本文件中。这样就可以将用户在 DataGridView 中所做的修改保存回文本文件。

8. 小结

  • 数据绑定: 可以从文本文件中读取数据并加载到 DataTable 中,通过 DataGridView 实现数据展示和编辑。
  • 数据解析: 将每一行文本解析为表格数据(以逗号为分隔符),存储在 DataTable 中。
  • 扩展功能: 可以进一步实现编辑数据并保存回文本文件,甚至扩展到 CSV 文件或其他格式化文本文件。

通过这种方式, 可以轻松地实现从文本文件读取数据并在界面中展示和编辑,而不依赖数据库。


http://www.mrgr.cn/news/56712.html

相关文章:

  • C++11——智能指针
  • Dockerfile 详解
  • RHCE--nginx实现多IP访问多网站
  • 系统性能优化——绑核
  • javascript对象介绍
  • 1.Springboot之ApplicationContextListenerConfig
  • 人工智能--数学基础
  • AIGC文本生成3D模型
  • 模型的参数化和非参数化是什么?
  • 常见的css选择器汇总
  • 管家婆ERP集成用友好业财(管家婆主供应链)
  • 机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用
  • HBuilderX离线打包Android
  • 会话管理——Cookie
  • vue常用的修饰符作用与使用场景总结
  • 云上大数据架构是什么?
  • 已集成工作流引擎的低代码平台(源码获取,JAVA,Vue)
  • WPF LiveChart控件基础属性介绍
  • 代码随想录算法训练营第五天| 哈希表理论基础 454.四数相加II 383.赎金信 15.三数之和 18.四数之和
  • 【C++】STL----map和set
  • RAD Studio 12.2 Athens Inline Patch 1 已可下载更新
  • 在嵌入式开发领域,有哪些好用的国产工具?
  • vllm源码解析(六):采样策略分析
  • Kafka-Windows搭建全流程(环境,安装包,编译,消费案例,远程连接,服务自启,可视化工具)
  • 【运维自动化-作业平台】如何使用全局变量之主机列表类型?
  • C++模板编程:使用模板实现高效泛型算法