将数据数组添加到多个数据库的下拉列表中

时间:2013-07-03 23:09:06

标签: c# ms-access database-connection

我相信我有一个有趣的问题。我正在编写一个应用程序,在C:\中搜索符合相同命名约定的文件夹。找到文件夹后,应用程序需要进入文件夹中的数据库并提取一位数据。该数据应添加到列表框或下拉列表中。下面是我到目前为止,它正确抓取一个文件夹....但不是所有具有相同命名约定的文件夹。

我认为这是

profselect.Text = reader[0].ToString();

但不确定。

目标是,我有4个不同的文件夹,名称如Rameses-100,Rameses-101等。每个文件夹都包含它自己的Ramdata.mdb。并且MDB是我希望在profselect下拉框中列出的名称。在此之后,用户将能够使用框中列出的名称切换到所选数据集。目前,如果我运行它只是将文件夹ramdata信息放在框中。我想有一个以上。

string directory = @"C:\";
        string[] folders = Directory.GetDirectories(directory, "Rameses-*");
        foreach (string foldername in folders)
        {
            var myDataTable = new System.Data.DataTable();
            using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source="+foldername+"\\Program\\Ramdata.mdb;Jet OLEDB:Database Password=****"))
            {
                conection.Open();
                var query = "Select u_company From t_user";
                var command = new System.Data.OleDb.OleDbCommand(query, conection);
                var reader = command.ExecuteReader();                    
                while (reader.Read())
                    profselect.Text = reader[0].ToString();
                conection.Close();
            }

1 个答案:

答案 0 :(得分:0)

你的问题不够明确,但我们可以说上面的代码是有效的。

您希望每次执行此操作时添加结果(我假设) 再假设您正在使用Windows窗体 在表单上放一个comboBox。

然后在执行操作时,您需要保留之前获得的列表,然后将其用作comboBox的dataSource。 下面的代码证明了这一点:

 List<string> dataList = new List<string>(); // this line is global not inside a closed scoop
 var myDataTable = new System.Data.DataTable();
 using (var conection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source="+foldername+"\\Program\\Ramdata.mdb;Jet OLEDB:Database Password=****"))
 {
    conection.Open();
    var query = "Select u_company From t_user";
    var command = new System.Data.OleDb.OleDbCommand(query, conection);
    var reader = command.ExecuteReader();                    
    while (reader.Read())
    {
       profselect.Text = reader[0].ToString(); 
       dataList.Add(profselect.Text);
    }
 }
 myComboBox.DataSource = dataList;
 myComboBox.SelectedText = dataList.Last();

就我所提供的这些信息而言,我可以提供帮助。