C#使用三层架构开发Winform的详细案例

下面我会为你详细讲解使用C#三层架构开发Winform的完整攻略。

什么是三层架构

三层架构是一种常见的软件架构模式,将软件应用划分为三个不同的部分:表示层、业务逻辑层和数据访问层。这三层分别负责不同的功能,并通过一定的规则进行交互。

  • 表示层:用户与应用程序进行交互的接口。在Windows应用程序中,表示层一般指Winform或WPF界面。
  • 业务逻辑层:应用程序的核心部分,处理各种业务逻辑,包括数据验证、计算、状态管理等。
  • 数据访问层:负责与数据库进行交互,将业务逻辑层的请求映射为实际的数据库操作。

使用三层架构开发Winform应用的步骤

第一步:创建项目

首先,我们需要创建一个新的C# Winform项目。在Visual Studio中,使用File -> New -> Project,选择Windows Forms App(.NET Framework)模板,填写项目名称和存储位置,点击Create创建项目。

第二步:创建三个文件夹

创建三个文件夹,分别用来存放表示层、业务逻辑层和数据访问层的代码。在Visual Studio的Solution Explorer中,右键单击项目名称,选择Add -> New Folder,分别创建Winform、BLL和DAL三个文件夹。

第三步:创建实体类

实体类用来定义数据模型,对应数据库中的表结构。在BLL文件夹中,创建一个名为Model的类库项目,用来存放实体类。在该项目中,每个实体类均需创建一个与表结构对接的类。

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Password { get; set; }
    public int Age { get; set; }
}

第四步:创建数据访问层

数据访问层用来连接数据库,并对数据库进行操作。在DAL文件夹中,创建一个名为DAL的类库项目,在该项目中创建访问数据库的方法。

public class UserDAL
{
    private static string connectionString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

    public static int AddUser(User user)
    {
        int result = 0;
        try
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                string sql = string.Format("insert into [User](Name, Password, Age) values('{0}', '{1}', {2})", user.Name, user.Password, user.Age);
                SqlCommand cmd = new SqlCommand(sql, conn);
                result = cmd.ExecuteNonQuery();
            }
        }
        catch (Exception)
        {
            throw;
        }
        return result;
    }

    public static List<User> GetAllUsers()
    {
        List<User> users = new List<User>();
        try
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                string sql = "select * from [User]";
                SqlCommand cmd = new SqlCommand(sql, conn);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        User user = new User();
                        user.ID = reader.GetInt32(0);
                        user.Name = reader.GetString(1);
                        user.Password = reader.GetString(2);
                        user.Age = reader.GetInt32(3);
                        users.Add(user);
                    }
                }
            }
        }
        catch (Exception)
        {
            throw;
        }
        return users;
    }
}

第五步:创建业务逻辑层

业务逻辑层是应用程序的核心部分,负责对数据进行处理,并处理各种业务逻辑。在BLL文件夹中,创建一个名为BLL的类库项目,在该项目中创建对外暴露的业务逻辑方法。

public class UserBLL
{
    public static int AddUser(User user)
    {
        return UserDAL.AddUser(user);
    }

    public static List<User> GetAllUsers()
    {
        return UserDAL.GetAllUsers();
    }
}

第六步:创建表示层

表示层在Winform应用程序中指的是自定义的所有窗体和控件。在Winform文件夹中,创建一个名为MainForm的窗体,使用DataGridView控件来显示数据库中的数据。同时在该窗体中创建AddUser按钮,用来添加新用户。

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();

        LoadUserList();
    }

    private void LoadUserList()
    {
        List<User> users = UserBLL.GetAllUsers();
        dgvUserList.DataSource = users;
    }

    private void btnAddUser_Click(object sender, EventArgs e)
    {
        UserForm userForm = new UserForm();
        if (userForm.ShowDialog() == DialogResult.OK)
        {
            UserBLL.AddUser(userForm.User);
            LoadUserList();
        }
    }
}

示例说明一

如上所示,我们在MainForm窗体中创建了一个btnAddUser按钮,在点击该按钮后会弹出UserForm窗体,用来让用户输入新用户信息。在UserForm窗体中,我们创建了一个User属性和确定按钮,点击确定按钮后会将输入的信息保存到User属性中并关闭窗体。

public partial class UserForm : Form
{
    public User User { get; set; }

    public UserForm()
    {
        InitializeComponent();
        User = new User();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        User.Name = txtName.Text.Trim();
        User.Password = txtPassword.Text.Trim();
        User.Age = int.Parse(txtAge.Text.Trim());
        DialogResult = DialogResult.OK;
    }
}

示例说明二

另外一个示例在DAL层,我们在操作数据库时使用了ConfigurationManager类读取配置文件中的数据库连接字符串,而将真实的数据库连接字符串存放在配置文件中可以方便地修改和维护。

private static string connectionString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

总结

以上就是使用C#三层架构开发Winform应用的详细攻略。这种架构模式能够优化代码结构,实现业务逻辑与数据访问分离,增加代码的可读性和可维护性。相信通过实现以上步骤,你也可以很好地实现一个Winform应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用三层架构开发Winform的详细案例 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#中英文混合字符串截取函数

    C#中英文混合字符串截取函数的完整攻略如下: 1. 函数定义 我们可以定义一个静态方法,用于处理中英文混合的字符串截取。方法的定义如下: public static string Substring(string str, int length) { if (str == null || str.Equals("")) return &q…

    C# 2023年6月8日
    00
  • C#创建及访问网络硬盘的实现

    C#创建及访问网络硬盘的实现 什么是网络硬盘 网络硬盘是一种将物理硬盘或云存储服务通过网络连接的形式,使得用户可以使用网络来进行硬盘存储和获取数据的设备或服务。 实现 在C#中,可以通过调用System.IO命名空间下的Directory类和File类等来创建及访问网络硬盘。 创建文件夹 对于创建文件夹,可以通过Directory.CreateDirecto…

    C# 2023年6月1日
    00
  • C# Redis学习系列(一)Redis下载安装使用

    C# Redis学习系列(一)Redis下载安装使用 下载 Redis官方网站提供了Windows版的Redis安装包。可以在https://redis.io/download下载最新版本的Redis for Windows。下载后解压缩到任意目录下即可。 安装 Redis并不需要安装过程,我们只需要下载解压缩后,启动redis-server.exe即可。可…

    C# 2023年6月8日
    00
  • C#中Byte转换相关的函数

    下面是 C# 中 Byte 转换相关的函数的完整攻略: 1. Byte 转换为字符串 方法一:ToString() 使用 Byte 类型的 ToString() 方法可以将 Byte 类型转换为字符串类型。 byte number = 97; string str = number.ToString(); 方法二:BitConverter.ToString(…

    C# 2023年6月7日
    00
  • .NET中文乱码的解决方法分享

    让我来为你详细讲解在.NET中解决中文乱码的方法。 1. 确保源代码文件的编码方式正确 在.NET开发中,我们经常使用Visual Studio作为开发工具来编写源代码文件,确保源代码文件的编码方式正确是解决中文乱码问题的第一步。通常建议使用UTF-8编码格式进行文件编码,因为UTF-8支持所有的Unicode字符,并且避免了中文乱码问题。在Visual S…

    C# 2023年5月31日
    00
  • C# 6.0 新特性汇总

    当C#6.0发布后,引入了一些非常有用的新特性,为程序员提供了更好的编程体验。本文将为大家详细讲解C#6.0中的新特性并附带相应的代码示例。 1. 空值传递运算符 在C#6.0中,新增了一个空值传递运算符(?.),可以在访问一个对象的属性或者执行方法前判断该对象是否为空。如果该对象为空,则程序会直接返回null,不会抛出NullReferenceExcept…

    C# 2023年5月15日
    00
  • C#表达式目录树示例详解

    接下来我将为你详细讲解 C# 表达式目录树示例的完整攻略。 什么是C#表达式目录树? C# 表达式目录树是一个用于表示 C# 运行时代码语义的对象模型。它可以把 C# 代码解析为树型结构数据,这里的树指的是一种抽象的数据结构。在表达式目录树中,每个节点都代表着一个 C# 程序中的某个代码元素,比如方法调用、变量引用等。 表达式目录树的组成 C# 表达式目录树…

    C# 2023年5月31日
    00
  • c# 实现简单的串口通讯

    下面是详细讲解“c#实现简单的串口通讯”的完整攻略。 硬件准备 在进行串口通讯前,我们需要准备一些硬件设备,包括: 确保计算机中带有串口或者USB转串口的转接器。 一根串口线。 串口通讯设备(例如:单片机)。 环境配置 在进行串口通讯前,需要在电脑上安装串口通讯库,使用.NET的串口类即可实现串口通讯。在Visual Studio中,可以在工具箱中找到串口控…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部