DataSet и сохранение в БД

326
12 октября 2018, 05:50

Подскажите пожалуйста.

У меня есть DataSet заполненный данными из .csv файла, как сохранить эти данные в БД. Буду очень благодарен за любую помощь.

Конструктивная критика приветствуется.

private DataSet dataSet = new DataSet();
private void buttonReadCSV_Click(object sender, EventArgs e)
{
    using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "CSV|*csv", ValidateNames = true })
    {
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            dataSet.Tables.Add(ReaderCSV.Read(ofd));
            modelEnterDataBindingSource.DataSource = dataSet.Tables[0];
        }
    }
}
public static DataTable Read(OpenFileDialog ofd)
{
    StreamReader sr = new StreamReader(new FileStream(ofd.FileName, FileMode.Open));
    CsvReader csv = new CsvReader(sr);
    csv.Configuration.HasHeaderRecord = true;
    BindingSource bindingSource = new BindingSource();
    bindingSource.DataSource = csv.GetRecords<ModelEnterData>().ToList();
    DataTable dataTable = new DataTable();
    IEnumerable<ModelEnterData> models = bindingSource.DataSource as IEnumerable<ModelEnterData>;
    using (var reader = ObjectReader.Create(models))
    {
        dataTable.Load(reader);
    }
    return dataTable;
}
Answer 1

Как вам уже правильно в комментариях сказали, можно использовать DataAdapter, у которого нужно будет вызвать метод Update (по ссылке еще и пример есть). Для обновления он использует команды, которые сгенерируются по умолчанию CommandBuilder'ом, но никто не мешает определить и свои.

static private DataSet CreateCommandAndUpdate(
    string connectionString,
    string queryString)
{
    DataSet dataSet = new DataSet();
    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        connection.Open();
        SqlDataAdapter adapter =
            new SqlDataAdapter();
        adapter.SelectCommand =
            new SqlCommand(queryString, connection);
        SqlCommandBuilder builder =
            new SqlCommandBuilder(adapter);
        adapter.Fill(dataSet);
        // Code to modify data in the DataSet here.
        // Without the SqlCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
    return dataSet;
}
READ ALSO
Получить нужные значения из строки

Получить нужные значения из строки

Есть строка с текстомСреди этого текста есть такой текст

212
Что это за язык?

Что это за язык?

Код очень похож на PHP, но я уверен, что это не он, тк код PHP выглядит след

189
Создание своего исключения в Yii2

Создание своего исключения в Yii2

) Пишу сейчас API для проекта, для работы с API создал два родительских контроллера от которых наследуются все остальныеВ этих контроллерах...

187