Member 14115523 Ответов: 2

Как заполнить combobox значениями базы данных с помощью n-уровневой архитектуры в C# windows form


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

Как преобразовать мой код в 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());
                    }
                }
            }

2 Ответов

Рейтинг:
1

terzasek

Попробовать это.

void List(){
SQLConnection.MsSql con = new SQLConnection.MsSql();
                System.Data.SqlClient.SqlConnection objConnd = new System.Data.SqlClient.SqlConnection();
                System.Data.SqlClient.SqlDataAdapter dtAdapterd = new System.Data.SqlClient.SqlDataAdapter();
                DataTable dtd = new DataTable();
                String strConnString = con.conn;
                objConnd = new System.Data.SqlClient.SqlConnection(strConnString);
                objConnd.Open();
                String strSQL;
                strSQL = "SELECT Name FROM User";
                dtAdapterd = new System.Data.SqlClient.SqlDataAdapter(strSQL, objConnd);
                dtAdapterd.Fill(dtd);
                dtAdapterd = null;
                objConnd.Close();
                objConnd = null;
                this.comboboxFilter.DataSource = dtd;
                this.comboboxFilter.ValueMember = "Name";
                this.comboboxFilter.DisplayMember = "Name";
                this.comboboxFilter.SelectedIndex = -1;
}


Рейтинг:
0

F-ES Sitecore

Поместите этот код в функцию на уровне данных, но не делайте "foreach", просто пусть этот метод возвращает "dt". Бизнес-уровень будет представлять собой всего лишь одну строку, которая вызовет функцию из уровня данных и вернет результат. Затем слой представления будет получить DataTable из бизнес-слой и заполнить его делать "по каждому элементу", чтобы добавить элементы в CELD_employeename


Member 14115523

но как написать код на презентационном слое? извините за глупый вопрос, я новичок в c#.