Итак, вот что я хочу сделать:
Я бы хотел импортировать все xml-файлы из папки (скажем, C:\Bla\AllMyLittleXmlFiles
) в DataSet, сделать что-то для этого и оттуда экспортироватьэто к SQL Server.Это возможно?Кажется, что DataSet очищает себя после каждого успешного чтения файла, оставляя только данные первого файла.
Вот мой код, включая некоторые ненужные вещи:
StringBuilder fileNames = new StringBuilder();
ArrayList filePaths = new ArrayList();
FolderBrowserDialog folder = new FolderBrowserDialog();
folder.ShowDialog();
int pathLength = folder.SelectedPath.Length;
foreach (string file in Directory.EnumerateFiles(folder.SelectedPath))
{
string fielname = file.ToString().Substring(pathLength + 1);
string filepath = file.ToString();
fileNames.AppendLine(fielname);
filePaths.Add(filepath);
}
// textBox1.Text = filePaths[0].ToString();
DataSet aDS = new DataSet();
StringBuilder uh = new StringBuilder();
int filesImported = 0;
foreach (object ob in filePaths)
{
string test = ob.ToString();
uh.Append(test);
aDS.ReadXml(ob.ToString());
filesImported++;
}
int tablesimported = 0;
foreach (DataTable table in aDS.Tables)
{
dataGridView1.DataSource = table.DefaultView;
tablesimported++;
}
MessageBox.Show("Files Imported:" + filesImported.ToString() + " Tables Imported : " + tablesimported.ToString());
textBox1.Text = uh.ToString();
EDIT После попытки ответить на некоторые вопросы у меня осталось следующее:
int filesImported = 0;
foreach (object ob in filePaths)
{
dsCollection[filesImported].ReadXml(ob.ToString());
filesImported++;
}
int tablesImported = 0;
foreach (DataSet ds in dsCollection)
{
foreach (DataTable table in ds.Tables)
{
mainDS.Merge(table);
tablesImported++;
}
}
, затем я вызываю метод Merge
для dsCollection.Единственное, что наборы данных в dscollection никогда не создаются, так что ... обратно в квадрат 2.