【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 文件或其他格式化文本文件。
通过这种方式, 可以轻松地实现从文本文件读取数据并在界面中展示和编辑,而不依赖数据库。