我相信我有一个有趣的问题。我正在编写一个应用程序,在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();
}
答案 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();
就我所提供的这些信息而言,我可以提供帮助。