我编写代码以用数据库值填充组合框。 如果此代码编写在表示层上,我的代码工作正常。但是我想在数据层上编写此代码。我的解决方案中有 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();