Подскажите пожалуйста.
У меня есть 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;
}
Как вам уже правильно в комментариях сказали, можно использовать 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;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
) Пишу сейчас API для проекта, для работы с API создал два родительских контроллера от которых наследуются все остальныеВ этих контроллерах...