我编写代码来用数据库值填充combobox。如果这段代码是在表示层上编写的,那么我的代码就能正常工作。但是我想把这段代码写在数据层上。我的解决方案中有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());
}
}
}如何在三层中编写这段代码。或者如果有人有更好的代码,那么请分享它。谢谢。
发布于 2019-01-12 01:59:46
不是直接将项目添加到组合框,而是将它们添加到列表中。假设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();
}
}然后,您可以使用以下命令将其分配给combobox
CELD_employeename.DataSource = EmployeeComboFills.GetUserNames();https://stackoverflow.com/questions/54151585
复制相似问题