如何在 C# 窗口窗体中使用 n 层体系结构用数据库值填充组合框



我编写代码以用数据库值填充组合框。 如果此代码编写在表示层上,我的代码工作正常。但是我想在数据层上编写此代码。我的解决方案中有 3 个项目(UI、BLL、DAL)。我希望在 DAL 中使用此代码,然后在 BLL 的帮助下调用 UI。如何做到这一点。请帮助我。这是我的代码。

如何将我的代码转换为 3 层架构。

using (SQLiteConnection conn = new SQLiteConnection(EmployeeComboFills.ecbconn()))
            {
                string CommandText = "SELECT Name FROM User";
                using (SQLiteCommand cmd = new SQLiteCommand(CommandText, conn))
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    DataTable dt = new DataTable();
                    SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
                    da.Fill(dt);
                    foreach (DataRow dr in dt.Rows)
                    {
                        CELD_employeename.Items.Add(dr["Name"].ToString());
                    }
                }
            }

如何在 3 层中编写此代码。或者,如果有人有更好的代码来做到这一点,那么请分享它。谢谢。

不要直接将项目添加到组合框中,而是将它们添加到列表中。假设EmployeeComboFills是静态 DAL 类,则可以向其添加此方法

public static List<string> GetUserNames()
{
    string CommandText = "SELECT Name FROM User ORDER BY Name";
    using (SQLiteConnection conn = new SQLiteConnection(ecbconn()))
    using (SQLiteCommand cmd = new SQLiteCommand(CommandText, conn))
    {
        conn.Open();
        DataTable dt = new DataTable();
        SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
        da.Fill(dt);
        return dt.Rows
            .Cast<DataRow>()
            .Select(dr => dr["Name"].ToString())
            .ToList();
    }
}

然后,您可以使用以下命令将其分配给组合框

CELD_employeename.DataSource = EmployeeComboFills.GetUserNames();

最新更新