基于List数据结构的简易数据库功能实现(C#.NetCore3.1)

要在C# .NetCore的WinForms中实现数据库的增删改查功能,但要求不依赖数据库,可以考虑使用内存中的数据结构来存储数据,例如使用Dictionary或List。这里使用List来实现一个简单的内存数据库:

  1. 首先,创建一个数据模型类,例如Student:
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
  1. 使用List作为内存数据库:
public class MemoryDatabase
{
    private List<Student> _students;

    public MemoryDatabase()
    {
        _students = new List<Student>();
    }
    
    // 查询
    public List<Student> GetAllStudents()
    {
        return _students;
    }

    // 添加
    public void AddStudent(Student student)
    {
        _students.Add(student);
    }

    // 修改
    public void UpdateStudent(Student updatedStudent)
    {
        var student = _students.FirstOrDefault(s => s.Id == updatedStudent.Id);
        if (student != null)
        {
            student.Name = updatedStudent.Name;
            student.Age = updatedStudent.Age;
        }
    }

    // 删除
    public void DeleteStudent(int id)
    {
			var student = _students.FirstOrDefault(s => s.Id == id);
			if (student != null)
			{
				_students.Remove(student);
			}
		}
	}
}
  1. 在WinForms应用程序中使用内存数据库:
public partial class MainForm : Form
{
    private MemoryDatabase _memoryDatabase;

    public MainForm()
    {
        InitializeComponent();
        _memoryDatabase = new MemoryDatabase();
    }

    private void AddStudentButton_Click(object sender, EventArgs e)
    {
        var student = new Student
        {
            Id = int.Parse(IdTextBox.Text),
            Name = NameTextBox.Text,
            Age = int.Parse(AgeTextBox.Text)
        };
        _memoryDatabase.AddStudent(student);
    }

    private void UpdateStudentButton_Click(object sender, EventArgs e)
    {
        var student = new Student
        {
            Id = int.Parse(IdTextBox.Text),
            Name = NameTextBox.Text,
            Age = int.Parse(AgeTextBox.Text)
        };
        _memoryDatabase.UpdateStudent(student);
    }

    private void DeleteStudentButton_Click(object sender, EventArgs e)
    {
        int id = int.Parse(IdTextBox.Text);
        _memoryDatabase.DeleteStudent(id);
    }

    private void RefreshDataButton_Click(object sender, EventArgs e)
    {
        var students = _memoryDatabase.GetAllStudents();
        // 将students绑定到DataGridView或其他显示数据的控件上
    }
}

如果你想将students数据绑定到DataGridView上,你可以按照以下步骤操作:

  1. 首先,需要在你的WinForms窗体上添加一个DataGridView控件。在Visual Studio的工具箱中,找到DataGridView控件并将其拖放到窗体上。然后为这个控件命名,例如studentsDataGridView。

  2. 修改RefreshDataButton_Click事件处理程序,将students数据绑定到studentsDataGridView:

private void RefreshDataButton_Click(object sender, EventArgs e)
{
    var students = _memoryDatabase.GetAllStudents();

    // 将students绑定到DataGridView
    studentsDataGridView.DataSource = new BindingList<Student>(students);
}

这里,我们将students集合转换为BindingList类型,并将其设置为studentsDataGridView的DataSource属性。这样,DataGridView就会显示students列表中的数据。

现在,每次单击“刷新数据”按钮时,DataGridView将显示内存数据库中的所有学生数据。通过这种方式,你可以在WinForms应用程序中实现内存数据库数据的显示和操作。

以上代码示例展示了一个简单的内存数据库实现,以及如何在WinForms应用程序中使用它进行增删改查操作。这种方法适用于项目场景没有高性能要求的情况。但请注意,这种内存数据库在程序关闭时会丢失数据。

如果需要持久化数据,可以考虑将数据序列化为文件(如JSON或XML)并在程序启动时加载。

以下是一个简单的将内存数据库序列化为JSON文件以及从JSON文件加载数据的示例:

  1. 首先,为了支持JSON序列化和反序列化,请在项目中添加Newtonsoft.Json NuGet包。在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,搜索“Newtonsoft.Json”,并安装。

  2. 在MemoryDatabase类中添加以下方法来保存和加载数据:

using Newtonsoft.Json;
using System.IO;

public class MemoryDatabase
{
    // ...其他代码...

    private const string FileName = "students.json";

    public void SaveData()
    {
        string jsonData = JsonConvert.SerializeObject(_students, Formatting.Indented);
        File.WriteAllText(FileName, jsonData);
    }

    public void LoadData()
    {
        if (File.Exists(FileName))
        {
            string jsonData = File.ReadAllText(FileName);
            _students = JsonConvert.DeserializeObject<List<Student>>(jsonData);
        }
    }
}
  1. 在WinForms应用程序中使用这些新方法:
public partial class MainForm : Form
{
    private MemoryDatabase _memoryDatabase;

    public MainForm()
    {
        InitializeComponent();
        _memoryDatabase = new MemoryDatabase();
        _memoryDatabase.LoadData(); // 加载数据
    }

    // ...其他代码...

    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        _memoryDatabase.SaveData(); // 在窗口关闭前保存数据
    }
}

现在,当程序关闭时,数据会保存到名为students.json的文件中,而在程序启动时,数据会从文件中加载。这样可以实现数据的持久化。

这种方法适用于数据量不大且对性能要求不高的场景。如果数据量变大,性能可能会受到影响。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值