要在C# .NetCore的WinForms中实现数据库的增删改查功能,但要求不依赖数据库,可以考虑使用内存中的数据结构来存储数据,例如使用Dictionary或List。这里使用List来实现一个简单的内存数据库:
- 首先,创建一个数据模型类,例如Student:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
- 使用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);
}
}
}
}
- 在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上,你可以按照以下步骤操作:
-
首先,需要在你的WinForms窗体上添加一个DataGridView控件。在Visual Studio的工具箱中,找到DataGridView控件并将其拖放到窗体上。然后为这个控件命名,例如studentsDataGridView。
-
修改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文件加载数据的示例:
-
首先,为了支持JSON序列化和反序列化,请在项目中添加Newtonsoft.Json NuGet包。在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,搜索“Newtonsoft.Json”,并安装。
-
在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);
}
}
}
- 在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的文件中,而在程序启动时,数据会从文件中加载。这样可以实现数据的持久化。
这种方法适用于数据量不大且对性能要求不高的场景。如果数据量变大,性能可能会受到影响。