【C#】不需要连接数据库使用 ADO.NET 实现数据绑定
如果想从 文本文件(TXT 文件) 中读取格式化的数据并将其绑定到控件(如 DataGridView)中,可以采用类似 ADO.NET 的数据绑定机制,但不需要连接数据库。相反,我们可以手动读取文件中的数据并将其加载到内存中的数据结构(如 DataTable 或 List),然后将其绑定到控件。
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. 绑定 DataTable 到 DataGridView
最后,我们将 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 将显示文本文件中的所有员工信息,如下所示:
| EmployeeID | Name | Position |
|---|---|---|
| 1 | John Doe | Manager |
| 2 | Jane Smith | Developer |
| 3 | Sam Brown | Analyst |
你还可以在 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 文件或其他格式化文本文件。
通过这种方式, 可以轻松地实现从文本文件读取数据并在界面中展示和编辑,而不依赖数据库。
