Как заполнить комбинированный список значениями базы данных, используя n-уровневую архитектуру в форме окна c # - PullRequest
0 голосов
/ 11 января 2019

Я пишу код для заполнения поля со списком значений базы данных. мой код работает правильно, если этот код написан на уровне представления. Но я хочу написать этот код на уровне данных. У меня есть 3 проекта в моем решении (UI, BLL, DAL). я хочу этот код в DAL, а затем позвонить в пользовательском интерфейсе с помощью BLL. как это сделать. Помогите мне, пожалуйста. вот мой код.

Как преобразовать мой код в трехуровневую архитектуру.

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 уровня. ИЛИ, если у кого-то есть лучший код для этого, поделитесь им. Спасибо.

1 Ответ

0 голосов
/ 11 января 2019

Вместо добавления элементов в выпадающий список, добавьте их в список. Предполагая, что 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();
...