从数据库设置数据并将其推送到Model类中的“List”

时间:2014-03-12 16:10:41

标签: database list model combobox

我可能遗漏了一些东西或者可能不理解它是如何工作的,但我正在尝试从数据库中获取数据,将其推入模型类(进入属性) - 列表,并从列表中获取值到ComboBox 。到目前为止我所做的是:

创建DBConnection类,它获取“connstring”,执行sp,从数据库读取数据。我还创建了一个具有一个属性“Department”的模型,我想用它来使用comboBox1.Items.Add()...将值推送到ComboBox中。

我错过了什么?为什么我会出现施法错误?

模特课:

namespace AddRequester
{
    public class ListDepartment
    {
        public List<string> Department { get; set; }
    }
}

DBConnection类:

namespace AddRequester
{
    public class DBConnection
    {
        string conn = ConfigurationManager.ConnectionStrings["dbConfig"].ToString();
        public void listDepartment()
        {
            SqlConnection sql = new SqlConnection(conn);
            try
            {
                SqlCommand comm = new SqlCommand("ListDepartment", sql);
                comm.CommandType = CommandType.StoredProcedure;
                sql.Open();
                ListDepartment departs = new ListDepartment();
                using (var dr = comm.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        departs.Department = dr["Description"].ToString();
                    }
                }
            }
            catch (Exception e)
            { 
                //add output
            }
            sql.Close();
        }
    }
}

从模型到组合框中获取值的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

因为没有人知道这么做,所以我以不同的方式做到了。我正在共享代码,以便其他人可以使用它,如果他们遇到同样的问题。

因此,我修改了DBConnection类的代码并完全删除了“model”ListDepartment类,

namespace AddRequester
{
    public class DBConnection
    {

        public List<string> listDepartment()
        {
            string conn = ConfigurationManager.ConnectionStrings["dbConfig"].ToString();
            SqlConnection sql = new SqlConnection(conn);
            List<string> departments = new List<string>();
            try
            {
                SqlCommand comm = new SqlCommand("ListDepartment", sql);
                comm.CommandType = CommandType.StoredProcedure;
                sql.Open();
                using (var dr = comm.ExecuteReader())
                {
                    while (dr.Read())
                    {
                       var dep = dr["Description"].ToString();
                       departments.Add(dep);
                    }
                }
            }
            catch (Exception e)
            { 
                Console.WriteLine(e.ToString());
            }
            sql.Close();
            return departments;
        }
    }
}

我已添加到Form1.cs

namespace AddRequester
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {
            DBConnection db = new DBConnection();
            foreach (var deps in db.listDepartment())
            {
                comboBox1.Items.Add(deps);
            }

        }
    }
}

最后,当我启动应用程序并使用combobox1时,我从数据库中获取项目列表。 欢呼声。